[英]string array of varying length
我正在编写一个C代码来逐行读取包含字母CR,LF,'\\ 0'的文件。 以下是我所附的代码示例。 我只想存储从每一行到数组的字母,这样数组中的行数就等于文件和列中的行数,其长度应不定(取决于第i行中的字符数)。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buffer[100];
char temp[128];
int c,i=0,j=0;
int pos=0;
FILE *file;
file = fopen("input", "r");
if (file) {
while ((c = getc(file)) != EOF){
if ((c>=65 && c<=90) || (c>=97 && c<=122))
temp[pos++]=c;
else if(pos>1) {
temp[pos]='\0';
buffer[i]=temp;
printf ("%s\n",temp);
i++;
pos=0;
}
}
}
fclose(file);
while (j<i){
printf("%s\n",buffer[j]);
j++;
}
}
如果我运行上述代码,则我所有的buffer [j]都包含相同的字符串。 谁能帮助我找出代码中的错误。
buffer[]
是一个指针数组,在while
循环中,您将每个指针都指向数组temp[]
buffer[i]=temp; // assign the address of temp to buffer[i]
然后,您要更改temp[]
数组的内容 ,但是地址始终相同。
如果要将temp
数据存储到buffer[]
每个位置,则需要分配内存并将数据复制到那里。 更像:
buffer[i]=malloc(strlen(temp) + 1);
strcpy(buffer[i], temp);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.