Проблема при открытии файла из-за странных символов в пути к файлу - PullRequest
1 голос
/ 06 ноября 2019

Я читаю путь к некоторому файлу из файла, который указан в качестве аргументов для моего приложения. Каждый путь написан на строке. У меня проблема с последним путем, который дает мне эту ошибку:

Cannot open C:\Users\Utente\Desktop\find\try1.txtl¹v

Вот мой код:

    struct filePath{
        char path[255];
        int fileOccurences;
    };

    struct filePath fPath[2];
    char currentLine[255];
    char path[255];
    char word[30];
    int i, ch;
    int k = 0;
    FILE * fInput = fopen(argv[1], "r"); 
    if(fInput == NULL){ //check sull'apertura del file
        fprintf(stderr, "Cannot open %s, exiting. . .\n", argv[1]);
       exit(1);
    }

    while(!feof(fInput)){
        for (i = 0; (i < (sizeof(path)-1) && ((ch = fgetc(fInput)) != EOF) && (ch != '\n')); i++){
            fPath[k].path[i] = ch;
        }
        FPath[k].path[i] = '\0';
        k = k + 1;
    }
    fclose(fInput);
    for(int j = 0; j<2; j++){
        FILE * fp = fopen(fPath[j].path, "r"); 
        if(fp == NULL){ 
            fprintf(stderr, "Cannot open %s, exiting. . .\n", fPath[j].path);
            exit(1);
        }
    }

Я загрузил только заинтересованную часть программы, это не таккак я точно написал свой кодИтак, кто-то знает, как я могу решить эту проблему и отменить этот символ "l¹v". Спасибо.

1 Ответ

3 голосов
/ 06 ноября 2019

Вы читаете имена файлов символ за символом в fPath[k].path[i], затем устанавливаете path[i] в нуль после цикла. Но fPath[k].path и path не являются одной и той же переменной, поэтому у вас нет нулевого символа fPath[k].path[i]

...