【发布时间】:2013-10-06 23:50:31
【问题描述】:
好的,伙计们,我的程序的目的是从一个名为 orginal.txt 的文本文件中读取,其中包含以下格式的名称:
Kyle Butler
Bob Jones
Nathan Moore
然后程序将这些名称一次取一个,然后将它们转换成如下形式:
Kyle.Butler@emailaddress.com
然后,该地址会逐行存储在名为 final.txt 的新文本文件中
问题是,我无法让它工作,它给了我一个分段错误,甚至无法写入 final.txt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void write(char line[100]);
int main()
{
FILE *fp;
fp = fopen("original.txt", "r+");
char line[100];
char mod[30]="@fakeemail.com\n";
while (fgets(line, 100, fp) != NULL){
int i;
for(i=0; i<100; ++i){
if(line[i]==' '){
line[i]='.';
}
if(line[i]=='\n'){
line[i]='\0';
}
strcat(line, mod);
}
FILE *fp2;
fp2 = fopen("final.txt", "a");
if (fp2 != NULL){
fputs(line, fp2);
fclose(fp2);
}
}
fclose(fp);
return 0;
}
【问题讨论】:
-
段错误发生在哪里?在这条线上? strcat(line, mod);
-
作为升级,您可能需要考虑是否需要为每次写入打开和关闭输出文件。
-
您是否定义了一个名为
write的自己的函数?已经有一个名为write的C 库例程。您可能应该选择一个对我们的应用程序更独特的名称。write很笼统。 -
始终检查 fopen() 的返回值。它迟早会咬你。
-
并且总是检查 fclose() 的返回值:stackoverflow.com/questions/19056309/…
标签: c file-io segmentation-fault