所以我试图从文本文件中读取并将其放在变量
中在文本文件中有
NAME= Bame
GAME= Fame
我听说过strsep / strtok,但我仍然遇到问题,而且这段代码我得到了Segmentation Fault 11
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main() {
char *token;
char *string;
char *tofree;
FILE *fp;
const char *file = "/tmp/test.txt";
fp = fopen(file, "r");
while(!feof(fp)) {
fgets(string, sizeof(string), fp);
token = strsep(&string, ",");
printf("%s", string);
}
fclose(fp);
exit(0);
}
答案 0 :(得分:1)
主要问题来自这一行:
fgets(string, sizeof(string), fp);
第二个参数应为'Maximum number of characters to be copied into str'。在调用此函数之前,您应该初始化string
。如果您查看我给出的链接中的示例,将string
更改为字符数组将有助于您更进一步。
char string[100];
....
fgets(string, 100, fp);
以前你传递的是sizeof(string)
,但是因为字符串实际上是指针类型,所以你以字节为单位传递指针的大小(4或8,具体取决于平台)。 string
也是一个未分配的指针,因此fgets可能会写入随机存储器地址。