【发布时间】:2018-04-28 21:25:41
【问题描述】:
我正在创建一个 shell 并试图让评论处理工作。我可以传入一个文本文件作为参数。我有一个文本文件“输出”,如下所示:
123
#456
$#789
我想通过将# 替换为'\0' 来“结束”从'#' 开始的任何字符串。
int removeComments(char* fileName){
FILE* myfile;
int c;
myfile = fopen(fileName, "r+");
if(myfile == NULL){
fprintf(stderr, "cannot open %s\n", fileName);
exit(-1);
}
while((c = fgetc(myfile)) != EOF){
if(c == '$'){
c = fgetc(myfile); // (don't change '$#')
}
else if(c == '#'){
fseek(myfile, -1, SEEK_CUR);
fputc('\0', myfile); //replace '#' with '\0'
fseek(myfile, 0, SEEK_CUR);
}
}
return 0;
}
如果我将'#' 替换为'!' 或任何其他字符,则可以正常工作,将文件更改为如下所示:
123
!456
$#789
但是,在我运行此代码并输入字符串结尾字符后,我无法再打开我的文件,我的计算机显示 "Could not display "output". The file is of an unknown type"。我怎样才能防止这种情况?或者如果需要,我该如何解决这个问题?
【问题讨论】: