gpt4 book ai didi

C - fgets 并将所有行存储在数组中

转载 作者:行者123 更新时间:2023-11-30 16:41:29 25 4
gpt4 key购买 nike

首先,如果另一个主题与我的问题相关,我很抱歉,但我无法找到合适的主题。

我会尽量说得清楚。

我正在实现一个类(class)项目,需要大约10个完整的文本文件将它们保存在一个数组中,然后处理数据。 (治疗不是问题)

我使用 fgets 来获取所有行,我将 s“字符串”传递给 char$ []

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int* argc, char* argv[]){
char* c = "./example.txt";
char s[500];

char* lignes[100];
int sizeLignes = 0;

printf("%s \n\n", c);

FILE* myFile = NULL;
myFile = fopen(c, "r");

if (myFile != NULL){
int n;
while ( fgets(s, 500, myFile) != NULL ){
printf("%d \n\n", sizeLignes);
lignes[sizeLignes] = s;
printf("%s", lignes[sizeLignes]);
sizeLignes++;
}

printf("%s", lignes[1]);
printf("%s", lignes[2]);
printf("%s", lignes[3]);

}else{
printf("Wrong file");
}
fclose(myFile);
return 0;
}

我的 s var 很好,如果我每次循环都打印它,那就很好。如果我打印 lignes[sizeLignes]在循环内部,它也很好。如果我尝试在外面打印该值,则放置...就像保留最后 4 个单词或类似的东西。

有什么想法吗?

您需要更多信息吗?

提前致谢,

伊齐奥

最佳答案

您应该使用 strcpy(lignes[sizeLignes], s) 而不是 lignes[sizeLignes] = s。您确实也可以使用 strcpy_s 。您还应该为字符串分配内存。所以我推荐下一个代码

lignes[sizeLignes] = malloc(500);
strcpy(lignes[sizeLignes], s);

在不需要时释放动态内存。

关于C - fgets 并将所有行存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46255179/

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