【发布时间】:2023-03-14 15:05:02
【问题描述】:
这是我的代码。它当前从文本文件中读取,一次一行。我使用 strcpy 将每一行存储到数组“行”中。我的问题是,我如何打印出这个数组的一个元素?目前这段代码可以编译运行,但是没有输出。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *ptr_file;
char buf[1000];
char lines[10][500];
//num of strings, length of strings
char *pointertoarray = lines[0];
ptr_file =fopen("d1.txt","r");
fgets(buf,1000, ptr_file)!=NULL;
strcpy(buf, lines[0]);
fgets(buf,1000, ptr_file)!=NULL;
strcpy(buf, lines[1]);
fclose(ptr_file);
printf("%s", pointertoarray);
return 0;
}
【问题讨论】:
-
让
buf大于lines的元素是危险的,因为strcpy()可能会溢出后者。 -
理想情况下,您应该使用 malloc 动态分配所有内容。最近在 SO 上有几个类似的问题与此不一致。