Tag: 字符串

C将char数组拆分为不同的变量

在C中如何用分隔符分隔char数组? 或者操纵字符串更好? 有什么好的C char操作函数?

为什么printf()在打印多个字符串(%s)时会留下换行符以及如何解决这个问题?

我制作了一个接受字符串(名字/姓氏)的程序,而不是典型的输出 Phil Snowken 3岁,我快到了 菲尔 Snowken 3岁 #include #define N 10 struct data{ char fname[30]; char lname[30]; int age; }; main() { int i; struct data base[N]; for(i=0;i<N;i++){ printf("\n————————-"); printf("\nPeople Data(%d remaining)\n",Ni); printf("—————————\n\n"); printf("\nFirst Name "); fgets(base[i].fname,30,stdin); printf("\nLast Name "); fgets(base[i].lname,30,stdin); printf("\nAge "); scanf(" %d",&(base[i].age)); fflush(stdin); } for(i=0;i<N;i++) printf("%s %s Year:(%d)",base[i].fname,base[i].lname,base[i].age); return 0; }

(* ++ argv)和while(c = * ++ argv )之间的区别

我有以下代码片段: int main(int argc, char *argv[]) { char line[MAXLINE]; long lineno = 0; int c, except = 0, number = 0, found = 0; while(–argc > 0 && (*++argv)[0] == ‘-‘) //These two lines while(c = *++argv[0]) //These two lines switch(c) { case ‘x’: except = 1; break; case ‘n’: number = 1; break; default: […]

印花浮子,保持精度

我正在编写一个打印浮点文字的程序,以便在另一个程序中使用。 我需要打印多少位数才能保持原始浮点的精度? 由于浮点数具有24 * (log(2) / log(10)) = 7.2247199精度的十进制数字,我最初的想法是打印8位数就足够了。 但是,如果我运气不好,那些0.2247199会分配到7位有效数字的左侧和右侧,所以我应该打印9位小数。 我的分析是否正确? 所有情况下都是9位十进制数字吗? 像printf(“%.9g”, x); ? 是否有标准函数将float转换为具有该值所需的最小小数位数的字符串,在7或8足够的情况下,所以我不打印不必要的数字? 注意:我不能使用hex浮点文字,因为标准C ++不支持它们。

realloc():重新分配时为下一个大小无效,为char *上的strcat腾出空间

我在以下代码上收到无效的内存错误: printf(” %s\n”,”FINE 5″); printf(“%s LENGTH IS: %d\n”,”FINE 6″,strlen(“: “)); buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(“: “)+1)* sizeof(char)); printf(” %s\n”,”FINE 7″); strcat(buffer, “: \0”); 输出: 精细5 精细6长度是:2 *检测到glibc * ./auto:realloc():下一个大小无效:0x08cd72e0 *** ======= Backtrace:========= /lib/tls/i686/cmov/libc.so 0.6(+ 0x6b591)[0x6dd591] 这里需要注意的是Fine 7从未打印过。 每次运行时无效的下一个大小错误位于同一位置。 发现这种相关性

如何在没有缓冲区溢出问题的情况下使用strncat?

我有一个缓冲区,我正在做很多strncat。 我想确保我永远不会溢出缓冲区大小。 char buff[64]; strcpy(buff, “String 1”); strncat(buff, “String 2”, sizeof(buff)); strncat(buff, “String 3”, sizeof(buff)); 而不是sizeof(buff),我想说一些buff – xxx。 我想确保我永远不会覆盖缓冲区

C:在文件中搜索字符串

如果我有: const char *mystr = “cheesecakes”; FILE *myfile = fopen(“path/to/file.exe”,”r”); 我需要编写一个函数来确定myfile是否包含任何mystr 。 谁能帮助我? 谢谢! 更新:事实certificate我需要部署的平台没有memstr 。 有谁知道我可以在我的代码中使用的免费实现?

在C中从String转换为Enum

是否有一种方便的方法来获取字符串(由用户输入)并将其转换为枚举值? 在这种情况下,字符串将是枚举值的名称,如下所示: enum Day { Sunday = 0, Monday = 1, … } 因此,如果用户给出了Day的名称,则可以将其解析为相应的Enum值。 诀窍是,我有超过500个我正在使用的值,它们分布在多个枚举中。 我知道c#中的Enum.Parse方法,所以在c中有这种forms吗?

读取C中未定义长度的字符串

首先(一如既往)我想对我的英语道歉,可能不够清楚。 我不擅长C编程,我被要求读取一个未定义长度的“字符串”输入。 这是我的解决方案 #include #include #include char *newChar(); char *addChar(char *, char); char *readLine(void); int main() { char *palabra; palabra = newChar(); palabra = readLine(); printf(“palabra=%s\n”, palabra); return 0; } char *newChar() { char *list = (char *) malloc(0 * sizeof (char)); *list = ‘\0’; return list; } char *addChar(char *lst, char num) { int […]

从字符串中删除子字符串?

我有一个C函数,它接受一个名为’buffer’的字符串,并解析它,它将匹配关键字并使用它来分配结构中的值。 但是,我想完全忽略一些关键字。 该程序解析VCard文件(.vcf,虚拟名片)。 以下是可能提供的示例行缓冲区: FN;CHARSET=UTF-8:David Celery FN是我感兴趣的关键词,而David Celery是与FN相关的值。 但是,CHARSET = UTF-8是我根本不关心的事情。 所以我的问题是,有没有办法让我扫描我的缓冲区,只需用“”替换’CHARSET = UTF-8’,这样我就不用担心解析它(以及我想要的其他类似关键字)忽视)。 谢谢,