繁体   English   中英

如何在 C 中使用 scanf() 读取一行?

[英]How to read a line using scanf() in C?

我需要使用 scanf() 读取一行作为输入,然后使用 printf() 打印它。 我尝试使用scanf("%[^\\n]%*c",sen);

printf("%[^\n]%*c", sen);

这是我得到的输出:

 %[^
]

谁能指出我的错误?

以下代码将接受三个输入,一个字符、一个字符串和一行。 之后,只需打印三个数据。 但是我在使用scanf()阅读该行时遇到了麻烦。

  { 
    char ch,s[10],sen[25];

    scanf("%c",&ch);
    scanf("%s",s);
    scanf("\n");
    scanf("%[^\n]%*c",sen);

    printf("%c\n",ch);
    printf("%s\n",s);
    printf("%[^\n]%*c", sen);
  }

预期输出将如下所示:

C
Language
Welcome To C!!

我得到了什么:

C
Language
 %[^
]

继续逐个输入输入,直到找到换行符('\\n')。

#include <iostream>
using namespace std;

int main() {
    char s[100],c;
    int len=0;

    while(scanf("%c", &c)==1) { //==1 is to ensure you have not reached end of file(EOF)
        if(c== '\n')
            break;
        s[len++]=c;
    }
    s[len] = '\0'; //to mark end of the string.
    printf("%s\n", s);
    return 0;
}

当使用 printf() 显示用户的输入时,您使用普通的“%s”符号,“%[^\\n]%*c”仅与 scanf() 一起使用,因为此函数仅在第一个之前接受输入空间。

所以当使用 printf() 显示时,你的代码应该是这样的:

printf("%s", sen);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM