0

次を使用して複数行の文字列を入力したい:

fgets(str,100,stdin)

そして、同じ文字列を出力します。
例えば:

入力:

my name is sandy
i am learning C

出力は次のようになります。

my name is sandy
i am learning C
4

1 に答える 1

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;
}
于 2013-06-19T18:35:25.773 に答える