2015-05-30 3 views
-2

Я не могу открыть этот .txt-файл, он также не работает с .csv-файлами Как мне его открыть? (это программа, им пытаются сделать, что поиск фразы внутри файла CSV)Файл не открывается с помощью fopen

#include <stdio.h> 
#include <stdlib.h> 

#define ARRAY_WIDTH 320 

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

    int i = 0, j = 0; 
    char bigString[200]; 
    FILE* csv; 
    csv = fopen("C:\Users\Ofek\Desktop\Folder\source.txt","r+t"); 
    while (feof(csv) != 1) 
    { 
     if (fgetc(csv) != '\n') 
     { 
      char bigString[i] = fgetc(csv); 
      i++; 
     } 
    } 
} 
+1

Какая ошибка вы принимаете? Есть ли более подробная информация, которую вы можете дать о том, что происходит не так, когда вы пытаетесь открыть файл? –

ответ

1

Заменить все одиночные обратные слэши с двойной косой черты:

C:\\Users\\Ofek\\Desktop\\Folder\\source.txt 

В противном случае символ после обратной косой черты будет интерпретируются как управляющие символы.

+0

Или используйте '/', что отлично подходит для Windows. – cdarke

1

есть несколько проблем с размещенным кодом. Вот несколько:

1) do not use 'feof()' for a loop control, it will not work as expected. 
2) when setting the bigString[i] variable, a second call to fgetc() is used. That results in the first, 3, 5, 7, etc characters being lost. 
Suggest: save the results of the call to fgetc() in the 'if' statement and use that saved value. 

следующий код исправляет «большинство» проблем в размещенном коде.

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 

    int i = 0; 
    int inputChar; 
    char bigString[200] = {'\0'}; 

    FILE* csv; 
    if(NULL == (csv = fopen("C:\\Users\\Ofek\\Desktop\\Folder\\source.txt","r+t"))) 
    { // then fopen failed 
     perror("fopen for source.txt failed"); 
     exit(EXIT_FAILURE); 
    } 

    // implied else, fopen successful 

    while (EOF != (inputChar = fgetc(csv))) 
    { 
     if ('\n' != inputChar) 
     { 
      bigString[i] = inputChar; 
      i++; 
     } 
    } 
    printf("Input file, without newlines: %s\n", bigString); 
    return(0); 
} // end function: main 
Смежные вопросы