2015-02-23 2 views
-1

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

Это мой код:

int c; 
FILE *file; 
file = fopen(inputFilename, "r"); 
if (file) { 
    while ((c = getc(file)) != EOF) { 
     putchar(c); 
    } 
    fclose(file); 
} 

Я не совсем уверен, что putchar(c) означает, но я предполагаю, что это просто распечатав символы по одному?

Как я могу попытаться достичь того, что я ищу?

+0

См. [Этот ответ] (http://stackoverflow.com/questions/26694366/dynamically-include-text-in-c-executable-file/26694593#26694593). – GoBusto

+0

Какой тип 'переменной'? вы можете использовать форматированные функции ввода-вывода для упрощения вашей работы. –

ответ

2

Что вы имеете в виду, чтобы получить все содержимое файла, который легко сделать этот путь

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

char *readFileContent(const char *const filename) 
{ 
    size_t size; 
    FILE *file; 
    char *data; 

    file = fopen(filename, "r"); 
    if (file == NULL) 
    { 
     perror("fopen()\n"); 
     return NULL; 
    } 

    /* get the file size by seeking to the end and getting the position */ 
    fseek(file, 0L, SEEK_END); 
    size = ftell(file); 
    /* reset the file position to the begining. */ 
    rewind(file); 

    /* allocate space to hold the file content */ 
    data = malloc(1 + size); 
    if (data == NULL) 
    { 
     perror("malloc()\n"); 
     fclose(file); 
     return NULL; 
    } 
    /* nul terminate the content to make it a valid string */ 
    data[size] = '\0'; 
    /* attempt to read all the data */ 
    if (fread(data, 1, size, file) != size) 
    { 
     perror("fread()\n"); 

     free(data); 
     fclose(file); 

     return NULL; 
    } 
    fclose(file); 
    return data; 
} 

int main() 
{ 
    char *content; 

    content = readFileContent(inputFilename); 
    if (content != NULL) 
    { 
     printf("%s\n", content); 
     free(content); 
    } 
    reutrn 0; 
} 

и это, конечно, не в состоянии в тех редких случаях, когда размер файла превышает размер доступной оперативной памяти, но это будет не вызывают undedined поведения, потому что этот случай обрабатывается как сбой malloc().

+0

Спасибо большое! Это работает отлично. – user3746428

Смежные вопросы