Fra*_*sco 1 c scanf c-strings segmentation-fault fclose
我在网上没有找到答案,如果有的话请链接...
#include <stdio.h>
int main(){
FILE*fp;
char arr[4];
printf("Opening...\n");
fp=fopen("slide.txt", "r");
printf("Opened\n");
if(fp==NULL){
printf("No such file\n");
return 1;
}
fscanf(fp, "%s", arr);
printf("Printing...\n");
printf("%s\n", arr);
printf("Printed\n");
printf("Closing...\n");
fclose(fp);
printf("Closed\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
文件内容:
ciao
Run Code Online (Sandbox Code Playgroud)
我的输出:
Opening...
Opened
Printing...
ciao
Printed
Closing...
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
声明字符数组至少像
char arr[5];
Run Code Online (Sandbox Code Playgroud)
并使用
fscanf(fp, "%4s", arr);
Run Code Online (Sandbox Code Playgroud)
也就是说,您需要在数组中为'\0'读取字符串的终止零字符保留一个空间。