gpt4 book ai didi

C: 将(文本)文件读入数组,看不出有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:44 25 4
gpt4 key购买 nike

第一次在这里发帖。我看过其他一些人的方法来做到这一点,其中一种方法与我尝试做的几乎完全相同。但是,它对我不起作用?

#include<stdio.h>
int main()
{

FILE *file;
char buffer[15];
char *text[12];

file = fopen("Text.txt", "r");

if(!file) {
printf("Failed");
return 1;
}


int count = 0;
while(fgets(buffer,sizeof buffer, file) != NULL) {
printf("%s", buffer);
text[count] = buffer;
count++;
}
printf("\n");
for (count=0;count<10;count++) {
printf("%s\n", text[count]);
}

fclose(file);

return 0;

现在在另一个站点上(在寻找解决方案或帮助时我发现了这个 http://www.daniweb.com/software-development/c/threads/316766/storing-string-in-a-array-reading-from-text-file

此人以与我相同的方式完成的地方(除了他们正在阅读的内容等方面存在明显的细微差别)。

我的文本文件是这样的:这快的棕色的狐狸跳跃超过这懒惰的狗(都在自己的线路上)。

基本上我想逐行读取文件并将每一行保存在数组的下一个空间中。

在代码中当我使用该行 printf("%s", 缓冲区);它将每一行的每个单词打印到控制台窗口。但是,当我使用 for 循环打印出数组的内容时,它只是为数组中的每个空格打印出“dog, dog, dog...”。

有人可以帮我吗?我做错了吗?

最佳答案

您还没有为text 分配任何内存。而且您必须复制 buffer 的值,因为它在每次迭代中都会发生变化。像这样的东西:

while(fgets(buffer,sizeof buffer, file) != NULL) {
printf("%s", buffer);
text[count] = malloc(strlen(buffer) + 1);
strcpy(text[count], buffer);
count++;
}

另外,检查 malloc 的返回值是否分配失败。

关于C: 将(文本)文件读入数组,看不出有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14536284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com