我有一个输入文件(txt),其中只有两行,由 \n
分隔。 .
例如:
FOO
BAR
现在我必须将第一行(在我的示例 FOO 中)放在 char **a
中和 char **b
中的第二行 (BAR) .
我不知道如何进行这项工作;你能解释一下吗?
最佳答案
如果要使用动态分配,则必须使用 char 指针分配 char vector (char *,而不是 char **)
:
#define MAX_CHAR 100
char *buffer = (char*) malloc (MAX_CHAR * sizeof(char));
然后你可以使用 fgets从流中读取字符并将它们作为 C 字符串存储到缓冲区中的函数:
FILE * pFile;
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL)
perror ("Error opening file");
else {
if(fgets (buffer, MAX_CHAR, pFile) != NULL)
puts (buffer);
}
fclose (pFile);
通过这种方式,您将第一行存储到缓冲区中,使用两次 fgets 将第一行和第二行保存在您想要的位置,您也可以使用非动态 vector 。
不要忘记:
free(buffer);
在我看来,你不需要 char**,因为 char *buffer 中包含所有文本,你可以使用 strtok拆分它。
关于C、读取文件并分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10174255/