使用fgets的多行输入字符串

时间:2013-06-19 16:48:09

标签: c string fgets

我想使用以下方法输入多行字符串:

fgets(str,100,stdin)

然后输出相同的字符串。
例如:

输入:

my name is sandy
i am learning C

,输出应为:

my name is sandy
i am learning C

1 个答案:

答案 0 :(得分: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;
}