Mo_laa 2024-06-24 06:29 采纳率: 100%
浏览 7
已结题

关于#c语言#的问题:测试一个想法:输入关键信息并打印出来

测试一个想法:输入关键信息并打印出来但是有一个问题就是输入的和输出的不是理想的数据


#include<stdio.h>

int main(void)
{

    
    //测试一个想法:输入关键信息并打印出来
    char Unit;    //单位
    char Nam;    //姓名
    char Ofice;    //职务
    int CotUnm;    //联系电话

    scanf("%c\n",&Unit);
    scanf("%c\n",&Nam);
    scanf("%c\n",&Ofice);
    scanf("%d\n",&CotUnm);

    printf("单位:%c\n 姓名:%c\n 职务:%c\n 联系方式:%d\n",Unit,Nam,Ofice,CotUnm);
    return 0;
}

我现在运行是是这样子的:

img

欢迎各位留言解答,谢谢

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-24 08:34
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    你遇到的问题是 C 语言中常见的输入输出问题。从你提供的代码来看,主要问题在于 scanf 函数的使用上。在读取字符时,你使用了 %c 格式符,这是正确的。但是,当你在 scanf 中使用 %c 来读取字符时,它会读取任何字符,包括空白字符(如空格、制表符、换行符等)。

    当你在 scanf 中使用 %c\n 时,它会读取一个字符,然后读取并丢弃一个换行符。但是,如果用户输入的字符后面紧跟着换行符,那么 scanf 会读取这个字符,但是不会读取换行符,因为 %c 后面紧跟的是 \n,它告诉 scanf 要读取一个换行符。这就导致了当你输入字符后直接按回车,程序会认为你已经完成了输入,而实际上你可能只是想要输入一个字符。

    为了解决这个问题,你可以做以下修改:

    1. 移除 scanf 中的 \n,这样 scanf 就不会期望一个换行符,而是会读取输入的第一个字符。
    2. 使用 getchar() 函数来读取并丢弃掉输入后的换行符。

    修改后的代码如下:

    #include<stdio.h>
    
    int main(void)
    {
        char Unit;  // 单位
        char Nam;   // 姓名
        char Ofice; // 职务
        int CotUnm; // 联系电话
    
        // 读取单位
        scanf("%c", &Unit);
        getchar();  // 读取并丢弃换行符
    
        // 读取姓名
        scanf(" %c", &Nam); // 注意这里的空格,它会跳过任何空白字符
        getchar();
    
        // 读取职务
        scanf(" %c", &Ofice);
        getchar();
    
        // 读取联系电话
        scanf("%d", &CotUnm);
    
        printf("单位:%c\n 姓名:%c\n 职务:%c\n 联系方式:%d\n", Unit, Nam, Ofice, CotUnm);
        return 0;
    }
    

    注意在读取姓名和职务时,我在 %c 前面加了一个空格,这样 scanf 会跳过任何空白字符,包括空格和换行符,只读取下一个非空白字符。

    希望这些修改能帮助你解决问题。如果你还有其他问题或需要进一步的帮助,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 6月24日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题