在文件中,每行都以单词或制表符开头,例如:
此测试
------tab//使用破折号,因为多个空格使其成为代码格式
不是选项卡
在我的循环中,我试图使用 sscanf 获取每个单词。这是我的代码:
while(fgets(str, sizeof(str), file) != NULL) {
if(str[0] == 't') {
char *test;
sscanf(str, "%s", test);
}
// This following code gives the segmentation fault
else {
char *temp;
sscanf(str, "%s", temp);
}
}
我尝试在 else 中输出 str,它是一个有效的 str。
您的"temp"和"test"指针未初始化,因此任何尝试sscanf((进入它们都会崩溃。
用静态数组替换它们(例如 char temp[100];
( 或将它们指向分配的内存(例如 char *temp = malloc(100);
,之后您需要free()
(,但请注意,由于缓冲区溢出的可能性,像这样使用 (s(scanf 是危险的。