我已经编写了这段代码但是当我尝试执行它时会显示分段故障核心转储

时间:2018-02-05 19:10:50

标签: c

#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的文件中读取文本,该文件仅包含单词和空格以及多行。每当我尝试执行它时都会显示分段错误。

1 个答案:

答案 0 :(得分:4)

该行

if(fp=NULL){

应该是

if(fp==NULL){
带有gcc选项的

-Wall应警告您。

我建议你这样编写if (NULL == fp){...,如果==变为=,编译器将不会发出警告,但是会告诉您无法更改{ {1}}价值......