C 替换文件中的字符
我需要用我的文件.txt中的特定字符替换每个字母字符。 我编写了以下代码片段:C 替换文件中的字符,c,C,我需要用我的文件.txt中的特定字符替换每个字母字符。 我编写了以下代码片段: FILE *file; char c; file = fopen(filename, "r+"); char chars[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v',
FILE *file;
char c;
file = fopen(filename, "r+");
char chars[] = { 'a', 'b', 'c', 'd', 'e',
'f', 'g', 'k', 'l', 'm',
'n', 'o', 'p', 'r', 's',
't', 'u', 'v', 'w', 'x',
'y', 'z'};
while ((c = getc(file)) != EOF) {
if (c == 'd') {
continue;
}
if (strchr(chars, c) != NULL) {
fseek(file, 0, SEEK_CUR);
fputc((int)specific_char, file);
fflush(file);
}
}
fclose(file);
}
但出于某种原因,它会替换我文件中的所有字符。但是我需要替换除“d”之外的所有
我的代码有什么问题?(代码应该用C编写,而不是用C++)
谢谢大家。我看到了几个bug:
对于初学者,您的“chars”数组上应该有一个null char,这样strhr调用就可以按预期工作:
char chars[] = { 'a', 'b', 'c', 'd', 'e',
'f', 'g', 'k', 'l', 'm',
'n', 'o', 'p', 'r', 's',
't', 'u', 'v', 'w', 'x',
'y', 'z', '\0'};
您可以同样轻松地用字符串声明替换上述数组。您不需要显式的空字符,因为它隐式地是字符串文本的一部分
char* chars= "abcdefghijklmnopqrstuvwxyz";
此外,本声明:
fseek(file, 0, SEEK_CUR);
是一个没有行动的人,什么都不做。我想您应该将文件指针向后设置一个字符。因此,这就是您想要的:
fseek(file, -1, SEEK_CUR);
不需要调用
fflush
,它只会影响性能。可能对调试有用,但您可能不需要它。此语句:fseek(文件,0,SEEK\u CUR)
是一个no op,不做任何操作。但是如果我删除此语句,我的代码将停止替换任何字符