我的代码最终在我的命令行中使用了一个争论,即一个文件可供使用,尽管我设计的代码的概念是使用无限数量的文件。它的作用是使用包含由空格分隔的单词的X个txt文件,并用\ n替换空格,从而创建单词列表。虽然它成功地完成了第一个参数,但当我添加两个或三个时,它会出现故障,真的想让它工作!
PS。这是同一代码中其他两篇帖子的延续。这不是一项家庭作业,我目前远离Uni,只是在我们的讲座之前尝试C文件i / o。
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char** argv) {
FILE *fpIn, *fpOut;
int i, j;
j = 1;
int 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 (1) {
c = fgetc(fpIn);
if ( c == EOF)
break;
if (isspace(c))
c = '\n';
fputc(c, fpOut );
}
j++;
}
}
return 0;
}
答案 0 :(得分:2)
看起来你有两个循环做同样的事情!
while(argc--) {
for(i = 1; i <= argc; i++) {
你真的只需要一个循环来迭代参数。如果使用while循环,则使用argc或j作为argv的索引。如果使用for循环,这是更简洁的方法,请使用for循环参数i
作为argv的索引。
答案 1 :(得分:2)
for(i = 1; i <= argc; i++)
应该是
for(i = 1; i < argc; i++)
是的,我知道你从1开始,但那是因为argv[0]
应该是程序调用名。