我正在创建一个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"
。我怎么能阻止这个?或者如果需要,我该如何解决这个问题?
答案 0 :(得分:1)
许多编辑都不允许您使用' \ 0'在他们中。例如vim可以显示该文件。但是gedit不能。您可以尝试https://superuser.com/questions/246014/use-gedit-to-open-file-with-null-characters中提供的建议。