首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scanf读取多行输入

使用scanf读取多行输入
EN

Stack Overflow用户
提问于 2013-01-24 13:01:56
回答 4查看 45.6K关注 0票数 4

为类编写程序,仅限于scanf方法。程序接收可以接收任意数量的行作为输入。使用scanf接收多行输入时出现问题。

代码语言:javascript
复制
#include <stdio.h>
int main(){
    char s[100];
    while(scanf("%[^\n]",s)==1){
        printf("%s",s);
    }
    return 0;
}

示例输入:

代码语言:javascript
复制
Here is a line.
Here is another line.

这是当前的输出:

代码语言:javascript
复制
Here is a line.

我希望我的输出与我的输入相同。使用scanf。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-24 14:56:55

尝试此代码并使用Tab键作为分隔符

代码语言:javascript
复制
#include <stdio.h>
int main(){
    char s[100];
    scanf("%[^\t]",s);
    printf("%s",s);

    return 0;
}
票数 6
EN

Stack Overflow用户

发布于 2013-01-24 13:16:45

我认为你想要的东西是这样的(如果你真的只限于scanf):

代码语言:javascript
复制
#include <stdio.h>
int main(){
    char s[100];
    while(scanf("%[^\n]%*c",s)==1){
        printf("%s\n",s);
    }
    return 0;
}

%*c基本上是要隐藏输入的最后一个字符。

来自man scanf

代码语言:javascript
复制
An optional '*' assignment-suppression character: 
scanf() reads input as directed by the conversion specification, 
but discards the input.  No corresponding pointer argument is 
required, and this specification is not included in the count of  
successful assignments returned by scanf().

编辑:删除了Chris Dodd猛烈抨击的误导性答案:)

票数 9
EN

Stack Overflow用户

发布于 2013-01-24 13:12:28

我给你个提示。

您需要重复scanf操作,直到达到"EOF“条件。

通常的方法是使用

代码语言:javascript
复制
while (!feof(stdin)) {
}

构造。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14494309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档