标题:怎么把scanf()函数中的\n去掉
只看楼主
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
 问题点数:0 回复次数:6 
怎么把scanf()函数中的\n去掉
程序代码:
#include <stdio.h>
#define MUNBER 40
struct mane{
    char surname[MUNBER];//姓氏

    char called[MUNBER];//

    char middle[MUNBER];//名和姓中间的名字

};
struct socialSecurity{
    int serialnumber[MUNBER];
};



int main(void)
{
    int n=0;
    int q=0;
    struct mane person[MUNBER];
    struct socialSecurity people[MUNBER];
    while(n<=MUNBER)
    {
    printf("请输入名:");
    gets(person[n].called);
    printf("请输入名和姓中间的名字:");
    gets(person[n].middle);
    printf("请输入姓:");
    gets(person[n].surname);
    printf("请输入社保号:");
    scanf("%d",&people[n].serialnumber);
    printf("%s %s %.1s-%d\n",person[n].called,person[n].surname,person[n].middle,people[0].serialnumber);
    printf("退出请按1,不退请按2.\n");
    scanf("%d",&q);
    if(q==1)
    {
        break;
    }

    n++;
    }
    return 0;
}

scanf()读取了\n,怎么把它去掉啊,或者有什么函数可以输入数字并把\n去掉的?


[此贴子已经被作者于2018-9-23 18:17编辑过]

搜索更多相关主题的帖子: scanf int person printf 输入 
2018-09-23 18:07
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:0 
你的问题是输入的社保号123变成奇怪数字么,还是别的,如果你需要的是让scanf()函数不读入\n,那你什么都不用做,scanf()不会读取空格和\n(至少在第一轮输入没有滞留\n的时候不会有问题)
如果你要解决的问题是社保号存入异常,那么这是另外的原因导致的
社保号,那么就是存入一串数字字符,不应该考虑当作整数变量来存储,因为太长容易溢出,那么你的社保号存储的结构声明就不合适了,因为你的结构内存储的成员是一个int类型的数组,这个暂且不提,显示数值异常应当考虑是否没有成功写入数据,还是无法写入?
至于scanf()函数在读取所需内容后在缓冲区滞留了\n这个问题,可以通过在scanf()语句下一句添加该代码丢弃多余的\n:
while(getchar()!='\n')
    continue;

另外还有一个情况,就是错误的输出格式导致的显示异常,这个也要考虑

[此贴子已经被作者于2018-9-23 18:46编辑过]

2018-09-23 18:44
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
不要想岔了,这个和\n没啥关系,
因为你的serialnumber是个数组名,数组名表示数组首元素的首地址,所以你输出的那个数字是这个地址。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-23 19:19
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
得分:0 
回复 3楼 forever74
怎么让它输出123?
2018-09-24 15:04
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
得分:0 
回复 2楼 Mr_doge
我怎么确定一串数字一个是整数变量还是数字字符,另外我调试过了,我的123输入成功,但为什么是错误输出。另外,我试过拿while(getchar()!='\n')改成while(scanf()!='\n'),为什么这样子就不行,scanf()不是也读取\n吗。
2018-09-24 15:15
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:0 
getchar()?
2018-09-24 19:15
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
得分:0 
1、两个结构体可以合并成一个结构体
2、int类型,可以存储最大的整数位65535,需要用字符数组存入社保号  char serialnumber[MUNBER];
3、代码内容没有看出scanf 读取了'\n'
4、确实没理解,你想要问的准确的问题是什么,是不显示你输入的社保号还是输入2不退出后出现的问题?
2018-09-24 21:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489962-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.041390 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved