【发布时间】:2011-12-27 23:53:44
【问题描述】:
我终于让这段代码在我的命令行上使用了一个参数,即它可以使用的一个文件,尽管我设计的代码的概念是它可以使用无限数量的文件。它的作用是获取一些包含由空格分隔的单词的文本文件,并用\n 替换空格,从而创建一个单词列表。虽然,它成功完成了第一个参数,但它只是忽略了第二个。
另一个小问题似乎是它最后还打印了一些垃圾字母,一个 Y 上面有两个点;我假设一些 EOF 符号,但我似乎无法阻止这种情况发生!
int main(int argc, char** argv) {
FILE *fpIn, *fpOut;
int i, j;
j = 1;
char c;
char myString[256];
printf("%d", argc);
printf("\n");
printf("The following arguments were passed to main(): ");
for(i=1; i<argc; i++) printf("%s ", argv[i]);
printf("\n");
while(argc--) {
for(i = 1; i < argc; i++) {
fpIn = fopen(argv[j], "rb");
snprintf(myString, 256, "%s~[%d]", argv[j], i);
fpOut= fopen(myString, "wb");
while (c != EOF) {
c = fgetc(fpIn);
if (isspace(c))
c = '\n';
fputc(c, fpOut );
}
j++;
}
}
return 0;
}
【问题讨论】:
-
Working with Text Files Two 的可能副本。您对该问题的接受答案解释了为什么您会得到那个额外的垃圾字符。您的代码在此问题中仍然不正确。
-
是的,这是我以前的帖子,虽然我已经取得了一些进展,但通常不会在旧帖子上得到回复,所以我想我可以再发一个:)
-
我真的不明白为什么,如果我说实话
-
简而言之,考虑以下规则:永远不要将
EOF值写入文件。 现在,您的代码中会如何发生这种情况? (确实如此,你必须弄清楚如何解决它。) -
我似乎仍然无法让它适用于多个参数:/