这是我的功能。它工作得很好;我只是无法再做一件事了。 我需要用户编写文件的路径,而不是静态fopen路径。我尝试了几件事,但我无法让它发挥作用。请帮忙
int FileToFile() {
FILE *fp;
FILE *fp_write;
char line[128];
int max=0;
int countFor=0;
int countWhile=0;
int countDo = 0;
fp = fopen("d:\\text.txt", "r+");
fp_write = fopen("d:\\results.txt", "w+");
if (!fp) {
perror("Greshka");
}
else {
while (fgets(line, sizeof line, fp) != NULL) {
countFor = 0;
countWhile = 0;
countDo = 0;
fputs(line, stdout);
if (line[strlen(line)-1] = "\n") if (max < (strlen(line) -1)) max = strlen(line) -1;
else if (max < strlen(line)) max = strlen(line);
char *tmp = line;
while (tmp = strstr(tmp, "for")){
countFor++;
tmp++;
}
tmp = line;
while (tmp = strstr(tmp, "while")){
countWhile++;
tmp++;
}
tmp = line;
while (tmp = strstr(tmp, "do")){
countDo++;
tmp++;
}
fprintf(fp_write, "Na tozi red operatora for go ima: %d pyti\n", countFor);
fprintf(fp_write, "Na tozi red operatora for/while go ima: %d pyti\n", countWhile - countDo);
fprintf(fp_write, "Na tozi red operatora do go ima: %d pyti\n", countDo);
}
fprintf(fp_write, "Maximalen broi simvoli e:%d\n", max);
fclose(fp_write);
fclose(fp);
}
}
答案 0 :(得分:0)
查看argc
和argv
。它们用于传递给程序的命令行参数。这要求您的main
函数修改如下:
int main(int argc, char *argv[])
argc
是一个整数,表示类似命令的参数的数量,而argv
是一个包含参数本身的char*
数组。请注意,对于两者,程序名称本身都算作参数。
所以如果你这样调用你的程序:
myprog c:\temp
然后argc
将是2
,argv[0]
将是myprog
,argv[1]
将是c:\temp
。现在您可以将字符串传递给您的函数。如果你传递更多参数,它们将是argv[2]
等等。
请记住,如果您的路径包含空格,则必须将其括在双引号中,以便将其视为一个参数,因为空格用作分隔符:
myprog "c:\path with spaces"