2014-09-13 3 views
-1
내 프로그램에 대한 입력 값이 여기에서 유래 C 코드를 작성

:C 프로그래밍 읽기 파일 및 문자열로 저장

char *input[] = {"This input string value !!!", NULL}; 

하지만 파일에서이 값을 읽을 수있는 방법 (예를 들어 input.txt를) ? 문자열과 같은 파일 내용을 가져올 수 있습니까?

고맙습니다.

#include <stdio.h> 

int main() { 
    char var[100]; 
    FILE *file; 
    file = fopen("input.txt","r"); 
    while(fgets(var, sizeof(var), file)!=NULL) 
    printf("Data read=%s\n",var); 
    fclose(file); 
    return 0; 
} 

또한이 같은 fgetc()를 사용할 수 있습니다 :이 같은 fgets()을 사용할 수 있습니다

+0

예는 가능한 같은 getline(3), 뭔가를 사용할 수 있습니다. [** this this **] – WhozCraig

답변

1

#include <stdio.h> 

int main() { 
     char ch; 
     FILE *file; 
     file = fopen("input.txt","r"); 
     while ((ch=fgetc(file)) != EOF) 
     printf("%c", ch); 
     fclose(file); 
     return 0; 
} 
+0

답장을 보내 주셔서 감사합니다. 한 가지 문제는 배열에 대해 제한된 수의 요소를주었습니다. 어떻게해야 제한 될 수 있습니까? 매번 다른 크기의 내용을 알지 못합니다. 다음은 fgets (var, 50, file)입니다. 50은 읽기 문자의 한도입니까? 제한없이 그것을 어떻게 만들 수 있습니까? 감사! –

+0

'fgetc'을 사용하면 ... 내 대답을 업데이트하겠습니다 –

+0

char var [100]; 그것을 동적으로 만드는 방법? –

2

당신이 파일을 줄 가장 쉬운 방식을 읽으려면 go는 getline을 사용하고 있습니다. 자세한 설명과 좋은 코드 예는 man page을 참조하십시오.

getline은 버퍼를 할당하고, 데이터를 복사하고 줄 바꿈 문자를 검색하는 등의 모든 저수준 배관 작업을 수행합니다. 이 작업은 getline에서 다시 할당해야하는 동적 할당 메모리를 사용하기 때문에 가능합니다. 최근의 POSIX와 호환되는 시스템에서

0

당신은

FILE *fil = fopen("somefile.txt", "r"); 
if (!fil) {perror("somefile.txt"); exit(EXIT_FAILURE); }; 
char*linbuf = NULL; 
size_t siz = 0; 
ssize_t linlen = 0; 
while ((linlen=getline(&linbuf, &siz, fil))>0) { 
    // linbuf contains the current line 
    // linlen is the length of the current line 
    do_something_with(linbuf, linlen); 
}; 
fclose(fil); 
free(linbuf), linbuf=NULL; 
linlen = 0, siz = 0;