【发布时间】:2012-07-01 01:44:55
【问题描述】:
我正在尝试将字符串列表从文件读取到数组。 在文件中看起来像这样
ItemOne
ItemTwo
ItemThree etc.
我将一个数组声明为:
char** array;
并归档为:
FILE *read;
这是我想出的:
{
i = 0;
printf("Type in the name of the file\n");
scanf("%s", &name);
read = fopen(name, "r");
if (read == NULL)
{
perror("Doesn't work");
return 1;
}
else
{
array = malloc(100 * sizeof(*array));
while (!feof(read))
{
array[i] = malloc(32 * sizeof(*array[i]));
fscanf(read, "%s", &array[i]);
i++;
}
}
}
Tt 编译,但是当我尝试显示数组时它是空的。有任何想法吗?
【问题讨论】:
-
请出示您用来显示数据的代码。
-
您显然省略了部分代码。
-
并把
malloc()的返回值转换了。 -
如果我理解你的代码,你的第二个
sizeof应该是char。更清楚了。还有一件事:除非您实际上是动态分配内存,否则不要使用malloc。你的数组只能存储 100 个字符串,而它们本身只能存储 32 个字符。解决这个问题,你会快乐很多。 -
显示一个数组:
void display(char** tab, int size){ int i; for(i=0; i<size; i++){ printf("%d.\t%s\n", i, tab[i]); } }我刚刚意识到从文件读取后我没有添加该数组的新大小,但它仍然不起作用。它将每个项目添加到 tha 数组的第一个位置并显示符号