编码程序的分段错误

时间:2015-08-29 10:34:11

标签: c++ c encoding

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char* argv[])
{

    int n;
    FILE *f1;
    char fn[]={"test.txt"};
    int c;
    f1=fopen(fn,"r");
    c=fgetc(f1);
    while(c!=EOF){
        if ((c<'Z')&&(c>'A')) c=c+n;
    }
    fputc(c,f1);
    fclose(f1);

}

我试图编写一个编码程序(!?idk,如果因为英语是我的第二语言而被调用的话)。如果我输入步数为4,它应该将A改为E,B改为F,依此类推。但它不断显示&#34;分段错误(核心转储)&#34;。我有什么不对的,请帮助我。

1 个答案:

答案 0 :(得分:0)

我在你的代码中发现了这些问题:

  • n未在程序中初始化

  • r为只读模式,您必须使用w+r+

  • fputc( int c, FILE *fp );此函数可用于写入文件。如果出现错误,它将返回写入成功的书写字符,否则返回EOF。

  • 分段错误是由r模式引起的,该模式在文件程序中尝试使用w+模式运行程序。