2013-06-19 37 views
0

欲輸入使用多行字符串:多行輸入的字符串使用與fgets

fgets(str,100,stdin) 

,然後輸出相同的字符串。
例如:

輸入:

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; 
} 
相關問題