C - fgets并将所有行存储在数组中
问题描述:
首先,如果另一个主题与我的问题有关,我很抱歉,但我找不到适合的问题。C - fgets并将所有行存储在数组中
我会尽量清楚。
我正在实现一个课程项目,它需要将约10个条目文本文件保存在一个数组中,然后处理数据。 (治疗不是问题)
我用fgets来获取所有行,他们我通过的 “串” 到字符$ []
代码:
#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;
}
我的小号VAR是好的,如果我打印每一个循环,这是很好的。 如果我在循环内打印lignes[sizeLignes]
,那也不错。 如果我尝试在外面打印这个值,就放置它......就像保留4个最后的单词或类似的东西。
有什么想法?
你需要更多信息吗?
由于提前,
Izio
答
应使用的strcpy(法分[sizeLignes],S)代替法分[sizeLignes] = S。 你的确可以使用strcpy_s。你也应该为字符串分配内存。 所以我建议的下一个代码
lignes[sizeLignes] = malloc(500);
strcpy(lignes[sizeLignes], s);
免费的动态内存时,将不需要它。
您需要将字符串复制到数组中。你只在数组中存储指向's'的指针,然后在下一次循环迭代中覆盖's'。 – pstrjds