#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的文件中读取文本,该文件仅包含单词和空格以及多行。每当我尝试执行它时都会显示分段错误。
答案 0 :(得分:4)
该行
if(fp=NULL){
应该是
if(fp==NULL){
带有gcc
选项的 -Wall
应警告您。
我建议你这样编写if (NULL == fp){...
,如果==
变为=
,编译器将不会发出警告,但是会告诉您无法更改{ {1}}价值......