#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main(){
FILE *fp;
fp=fopen("test","r");
if(fp=NULL){
printf("Error in opening file\n");
exit(0);
}
else{
char str[15],arr[200],temp,*add;
add=arr;
int i;
while(!feof(fp)){
fscanf(fp,"%s",str);
for(i=0;i<(strlen(str)/2)+1;i++){
temp=str[i];
str[i]=str[strlen(str)-(i+1)];
str[strlen(str)-(i+1)]=temp;
};
strcpy(add,str);
add+=(strlen(add)+1);
*(add-1)=' ';
};
*(arr+strlen(arr))='\0';
printf("%s \n",arr);
};
fclose(fp);
}
这段代码是用来从一个名为test的文件中读取文本的,该文件只包含单词、空格和多行。每当我试图执行时,它都会显示分段错误。
最佳答案
线路
if(fp=NULL){
应该是
if(fp==NULL){
gcc
使用-Wall
选项应该会警告您。我建议您用这种方式编写
if (NULL == fp){...
,如果==
变成=
,编译器不会发出警告,但会出现一个错误,告诉您不能更改NULL
值。。。关于c - 我已经编写了这段代码,但是当我尝试执行它时,它显示了段错误核心转储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48629795/