【问题标题】:Multiple line input string using fgets使用 fgets 的多行输入字符串
【发布时间】:2013-06-19 16:48:09
【问题描述】:

我想输入一个多行字符串:

fgets(str,100,stdin)

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

输入:

my name is sandy
i am learning C

输出应该是:

my name is sandy
i am learning C

【问题讨论】:

  • 太好了。你有问题吗? fgets 当然是一个适合入门的函数。
  • 您在 fgets 中读取多行本身是不可能的。如果 strcat 稍后...
  • 你看过书中的“循环”了吗?

标签: c string fgets


【解决方案1】:
#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;
}

【讨论】:

    猜你喜欢
    • 2019-10-16
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多