#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/

10-14 20:30
查看更多