【发布时间】:2015-09-21 15:21:32
【问题描述】:
我想读取一个文件并将其存储在一个列表中。我确实这样做了,但是当我使用 gdb 时出现此错误:
#0 0xfeea5b41 in strcpy () from /lib/libc.so.1.
代码如下:
int
main (int argc, char *argv[])
{
/*declare and initialise variable */
char array[10][150], buffer[150];
//message =(char*)malloc(sizeof(char));
int i = 0;
FILE *fp;
fp = fopen (argv[1], "r");
if (fp == 0)
{
fprintf (stderr, "Input not valid\n");
exit (1);
}
/*stores and prints the data from the string */
int counter = 0;
while (fgets (buffer, 150, fp))
{
strcpy (array[i], buffer);
//printf(" %s",message[i]);
i++;
counter++;
}
fclose (fp);
return 0;
}
【问题讨论】:
-
除了缩进不好、没有
#include以及将fp与整数0进行比较之外,似乎没有什么不好的地方。你的输入文件的内容是什么? -
i++;应该检查范围,因为它索引多达 10 个元素。如果有超过 10 个文件读取,您将破坏数组。
标签: c file-handling