所以我试图从一个文本文件中读取并将其放入一个变量中
在文本文件中有

NAME= Bame
GAME= Fame

我听说过strsep/strtok,但我仍然有问题,使用这段代码,我会遇到分段错误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);
}

最佳答案

主要问题来自这一行:

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),但是由于string实际上是指针类型,所以您传递的是以字节为单位的指针大小(根据平台的不同,可以是4或8)。string也是一个未分配的指针,因此fgets可能会写入随机内存地址。

10-05 20:49
查看更多