询问用户在C中输入fopen的路径?

时间:2014-12-14 00:23:33

标签: path fopen

这是我的功能。它工作得很好;我只是无法再做一件事了。 我需要用户编写文件的路径,而不是静态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);
    }


}

1 个答案:

答案 0 :(得分:0)

查看argcargv。它们用于传递给程序的命令行参数。这要求您的main函数修改如下:

int main(int argc, char *argv[])

argc是一个整数,表示类似命令的参数的数量,而argv是一个包含参数本身的char*数组。请注意,对于两者,程序名称本身都算作参数。

所以如果你这样调用你的程序:

myprog c:\temp

然后argc将是2argv[0]将是myprogargv[1]将是c:\temp。现在您可以将字符串传递给您的函数。如果你传递更多参数,它们将是argv[2]等等。

请记住,如果您的路径包含空格,则必须将其括在双引号中,以便将其视为一个参数,因为空格用作分隔符:

myprog "c:\path with spaces"