Tag: 字符串

C将存档的行转换为数组

我有一个存档,我想把每一行变成一个数组:v [i] .data。 但是,当我运行代码时,它会为数组显示零。 有什么我应该改变的吗? 输入 1760 2月20日/ 18,11403.7 2月19日/ 18,11225.3 2月18日/ 18,10551.8 2月17日/ 18,11112.7 2月16日/ 18,10233.9 实际产出 1761 0 预期产出 1761 2月20日/ 18,11403.7 #include #include #include #include typedef struct{ char data[20]; }vetor; int main(int argc,char *argv[]){ FILE *csv; if((csv=fopen(argv[1], “r”)) == NULL ) { printf(“not found csv\n”); exit(1); } long int a=0; char linha[256]; […]

C中的字符串指针数组

我知道C中的字符串基本上是一个字符数组。 我正在尝试一个指针数组,指针链接到字符串 我基本上想打印出来,而不依赖’\ n’来排序它 12345 abcde 67890 fghij 这是我的代码 – > char *array1 = “12345”; char *array2 = “abcde”; char *array3 = “67890”; char *array4 = “fghij”; char *array_2d[3]; array_2d[0] = &array1; array_2d[1] = &array2; array_2d[2] = &array3; array_2d[3] = &array4; int i,j; for(i = 0; i<3 ; i++ ) { for(j = 0; j<3 […]

来自`strsep`的字符串标记不打印(seg fault)

我正在使用较小的代码来测试较大(初学者)程序的function,但是我在显示我从字符串中拉出的令牌时遇到了问题。 我找到并使用了: #include #include int main() { char *string, *found; string = strdup (“1/2/3”); printf(“Original string: ‘%s’\n”,string); while ((found = strsep(&string,”/”)) != NULL ) printf (“%s\n”,found); return (0); } 这工作正常,一次打印一个令牌作为字符串。 然后当我尝试移动到用户输入的字符串时: #include #include int main() { char string[13]; char *found, *cp = string; fprintf(stderr, “\nEnter string: “); scanf(“%12s”,string); printf(“Original string: ‘%s’\n”,string); while((found = strsep(&cp,”/,-“)) != […]

将内存分配给字符串数组

我想用两个函数填充一个字符串数组:第一个,如果我有n个字符串要分配,将分配n个内存空间; 第二个将为每个读取的字符串分配内存 这是第一个function: char** allocate(int n) { char** t; t=(char**)malloc(n*sizeof(char*)); if(!t) exit(-1); return t; } 这是第二个: void fill(char*** t,int n) { int i; char* help=” “; for(i=0;i<n;i++) { printf("\n saisir la chaine n %d :",i+1); scanf("%s",help); *t[i]=(char*)malloc((strlen(help)+1)*sizeof(char)); strcpy(*t[i],help); } } 我没有忘记像这样打电话给第二个: fill(&t,n); 问题是我在读完第一个字符串并且程序结束后出错。

如何设置一个C函数,将用户输入分成多个部分,还拆分那些较小的部分?

我正在尝试开发一个带有一行用户输入的C函数,例如这一行: 1X 1X 3Y 1Z 1Z 1Z 1Z 2X 2X (编辑:这只是用户将输入的任意示例。在实际程序中,他们可以输入1到48个数字字符对之间的任何位置。) 想法是用户将插入整行,并将其分成9个部分(每个数字和字符对是一部分)。 然后,数字和字符对也将彼此分开(我正在考虑这部分,它们都属于包含numValue和charValue的结构)。 我可以用什么来分割用户的输入? 我对C.比较新。

为指针及其数据分配的内存在哪里?

我的问题是我是否有一些function void func1(){ char * s = “hello”; char * c; int b; c = (char *) malloc(15); strcpy(c,s); } 我认为s指针是在堆栈上分配的,但是存储的数据“hello”在程序的数据段中是什么? 至于c和b它们是单元化的,因为’c =一些内存地址’而它没有一个但它是如何工作的? 和b也没有内容所以它不能存储在堆栈上? 然后当我们在堆上为c分配内存时,malloc c现在有一些内存地址,如果给定堆上该字符串的第一个字节的地址,这个单元化的c变量怎么样?

我如何知道何时应该释放库函数返回的C中的字符串?

我应该使用free() ¹自己在C中释放哪些字符串? 我的知识状态: char a[256]; :不 char *a = “abcdefg”; :不 char *a = malloc(15L); :是的 getenv()返回的字符串: no Windows函数返回的字符串²:??? ¹或LocalFree() / GlobalFree() / VirtualFree() ²特别是GetCommandLineW()

将文本文件拆分为C中的单词

我有两种类型的文本,我想将它们分成单词。 第一种类型的文本文件只是由换行符分隔的单词。 Milk Work Chair … 第二种类型的文本文件是书中的文本,它只有空格。 (没有昏迷,问号等) And then she tried to run but she was stunned by the view of … 你知道哪种方法最好吗? 我尝试了以下两种方式,但似乎我正在进行分割。 对于我使用的第一种文本: while(fgets(line,sizeof(line),wordlist) != NULL) { /* Checks Words | printf(“%s”,line);*/ InsertWord(W,line);/*Function that inserts the word to a tree*/ } 对于我使用的第二种文本: while(fgets(line,sizeof(line),out) != NULL) { bp = line ; while(1) { […]

如何为未知长度的输入字符串分配内存?

这是结构: typedef struct _friend { char *firstname; char *lastname; char birthdate[9]; } friend; 我很困惑如何让用户输入一个字符串并将其作为firstname (或lastname )放在friend结构中。 另外,如果用户在使用fgets时输入的字符数超过256个,该怎么办? 这就是我到目前为止…… friend *f = (friend *)malloc(sizeof(friend)); //initialize f pointer to friend char *str; fgets(str,256,stdin); f->firstname = (char*)malloc(sizeof(char)*(strlen(str)+1)); strcpy(f->firstname,str);

在C中使用字符串有哪些第三方选项?

我已经知道有一段时间我在Python中编码的速度比在C中快17倍,我想我有点假设我不是一个程序员,直到我真正想到它并意识到唯一的问题是我能够处理C字符串/字符数组/字符指针/无论如何。 我对它们有一个阻碍,操纵它们需要几个小时。 我在C ++中没有这个问题。 但生活迫使我现在用纯C编码,我试图找到是否有一些我可以添加的第三方库,这将使我的生活更轻松。 我做了一些谷歌搜索,我真的没有找到太多。 我开始考虑自己做,但我觉得我要重新发明轮子。 肯定有什么东西在那里? 有谁知道这样的事情? 在这方面使C更像C ++的东西。 我意识到这是一个愚蠢的想法,因为这是C ++的重点,但你理解,我敢肯定。