2013-06-19 5 views
0

나는 입력에 사용하여 여러 줄 문자열을합니다. 예
:다중 라인 입력 문자열을 사용하여는 fgets

입력 :

my name is sandy 
i am learning C 

및 출력 같아야 중대

my name is sandy 
i am learning C 
+6

. 질문 있습니까? 'fgets'는 확실히 시작하기에 적합한 함수입니다. –

+1

fgets 자체에서 여러 줄을 읽는 것은 불가능합니다. 나중에 strcat 경우 ... – BLUEPIXY

+3

당신은 당신의 책에서 "고리"를 보았습니까? –

답변

0
#include <stdio.h> 
#include <string.h> 

char *mfgets(char * restrict s, int n, FILE * restrict stream){ 
    int ch, i=0; 
    if(n<1)return NULL; 
    if(n==1){ 
     *s = '\0'; 
     return s; 
    } 
    while(EOF!=(ch=fgetc(stream))){ 
     s[i++] = ch; 
     if(i == n - 1) break; 
     if(ch == '\n'){ 
      char next = fgetc(stream); 
      if(next == '\n') 
       break; 
      else 
       ungetc(next, stream); 
     } 
    } 
    s[i] = '\0'; 
    return i == 0 ? NULL : s; 
} 

int main(int argc, char *argv[]){ 
    char str[100]; 
    printf("input (only newline is end)\n"); 
    mfgets(str, 100, stdin); 
    printf("%s", str); 

    return 0; 
}