【发布时间】:2020-05-08 01:13:19
【问题描述】:
我需要编写一个通过命令行获取输入的程序,其中第一个参数是文件名,第二个参数是要替换的单词,第三个参数是要替换的单词。如果我输入具有相同长度的单词,则程序可以工作,但是当我更改长度时,它会保留一些字符。例如:
我在走路 /* 文件 test.txt 中的文本 */ 命令行参数:test.txt 是 am
输出:我在走路
主要功能
int main(int argument_count, char ** argument_vector)
代码:
FILE * stream;
char string[15];
if(stream = fopen(* (argument_vector + 1), "r+"))
{
while(fscanf(stream, "%s", string) != EOF)
{
if(!(strcmp(string, * (argument_vector + 2))))
{
int x = -(strlen(string));
fseek(stream, x, SEEK_CUR);
fprintf(stream, "%s", * (argument_vector + 3));
fseek(stream, 0, SEEK_CUR);
}
}
fclose(stream);
}
else printf("Error while reading file");
return 0;
【问题讨论】:
-
而不是
*(x + n)只是做x[n],它更容易阅读。按照惯例,main被定义为int main(int argc, char** argv),所以argv[1]是这样做的方式。 -
最经典的做法是读取整个文件以查找您想要的数据并写出包含更改的新文件。对文本文件进行就地更改非常困难
-
@MarkoMajstorovic 为什么不能创建新文件?
-
@tadman 只是在练习指针算术,我会记住这一点。
-
记住
x[n]也是指针运算。在 C 中,这两者只是表达同一事物的不同方式,但使用最易读的形式。for (char* x = y; *x; ++x)有时可能是,其他时候是x[i]。
标签: c