C语言2:说心里话

这篇具有很好参考价值的文章主要介绍了C语言2:说心里话。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

描述
分两次从控制台接收用户的两个输入:第一个内容为“人名”,第一个内容为“心里
话”。
然后将这两个输入内容组成如下句型并输出出来:
1.(人名),I want to say,(心里话
2.
输入输出示例:
输入:Kim
You are beautiful!
输出:
Kim,I want to say,You are beautiful!

(答案在文末,有两种答案)

错误演示:

#include <stdio.h>

int main() {
    char name[100];
    char thoughts[100];

    // 从控制台接收第一个输入
    printf("请输入人名:");
    scanf("%s", name);

    // 从控制台接收第二个输入
    printf("请输入心里话:");
    scanf("%s", thoughts);

    // 组成句子并输出
    printf("%s, I want to say, %s\n", name, thoughts);

    return 0;
}

C语言2:说心里话

 

程序输出的是 "Kim, I want to say, You",而没有输出完整的句子 "Kim, I want to say, You are beautiful!",可能是因为输入的心里话太长,超出了 scanf 函数读取字符串的默认长度。此时可以使用指定最大长度的方式来接收输入。

修改 C 语言代码如下:

#include <stdio.h>

int main() {
    char name[20];
    char thoughts[50];

    // 从控制台接收第一个输入
    printf("请输入人名:");
    scanf("%s", name);

    // 从控制台接收第二个输入
    printf("请输入心里话:");
    scanf("%49[^\n]", thoughts);   // 指定最大长度为49,并忽略换行符

    // 组成句子并输出
    printf("%s, I want to say, %s\n", name, thoughts);

    return 0;
}

C语言2:说心里话

 

如果在输入心里话时出现 "Kim, I want to say, € @报错" 这样的输出,那么很可能是在输入时发生了中文编码问题。可以尝试以下方法解决:

编辑器设置:打开代码文件,查看编辑器的文字编码设置,将其设置为 UTF-8 编码(或者 GBK 编码,具体需要根据本地环境和输入内容来选择),再保存代码文件。

输出调试:在 C 语言程序中加入一些输出语句,以便查看程序的执行情况,比如:

   printf("输入的心里话是:%s\n", thoughts);   // 输出调试信息

C语言2:说心里话

 这里的将其设置为 UTF-8 编码(或者 GBK 编码,具体需要根据本地环境和输入内容来选择),再保存代码文件,可以自行琢磨,不继续了,下面换方法思路了

方法一:使用 fgets 函数来接收用户输入

所以最终改出来的代码为:

#include <stdio.h>
#include <string.h>

int main() {
    char name[20];
    char thoughts[50];

    // 从控制台接收第一个输入
    printf("请输入人名:");
    fgets(name, sizeof(name), stdin);
    name[strcspn(name, "\n")] = '\0';   // 去除换行符

    // 从控制台接收第二个输入
    printf("请输入心里话:");
    fgets(thoughts, sizeof(thoughts), stdin);
    thoughts[strcspn(thoughts, "\n")] = '\0';   // 去除换行符

    // 组成句子并输出
    printf("%s, I want to say, %s\n", name, thoughts);

    return 0;
}

C语言2:说心里话

 

方法二:使用 gets 函数

#include <stdio.h>
#include <string.h>

int main() {
    char str1[20], str2[20];

    printf("请输入人名:");
    gets(str1);

    printf("请输入心里话:");
    gets(str2);

    printf("%s, I want to say, %s\n", str1, str2);

    return 0;
}

C语言2:说心里话

 

使用 gets 函数来读取输入。gets 函数在读取一行输入时不会将换行符作为输入的一部分,因此不需要去除换行符。接下来,使用 printf 函数输出组合好的字符串。

虽然 gets 函数比 fgets 函数用起来更方便,但由于 gets 函数不能限制输入的长度,容易发生缓冲区溢出,造成系统安全漏洞,所以在实际开发中建议使用 fgets 函数,并在读取用户输入前检查输入字符的长度。文章来源地址https://www.toymoban.com/news/detail-478654.html

到了这里,关于C语言2:说心里话的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浏览器控制台调试代码和JavaScript控制台方法介绍

    浏览器控制台调试代码 浏览器控制台(Console)是浏览器提供的一个开发工具,用于在浏览器中执行和调试 JavaScript 代码。它提供了一个交互式环境,可以输入 JavaScript 代码,并立即看到代码执行结果或输出信息。 在大部浏览器中,可以通过按下 F12 键或右键点击网页并选择

    2024年02月03日
    浏览(95)
  • docker rabbitmq控制台访问失败,rabbitmq控制台访问不了

    1. docker-compose配置内容: 2. 映射文件夹一定要赋予权限 不然程序启动无法写入数据:     3. log日志: 4. 日志看着已经启动了, 其实还没有。手动进入容器,启动管理插件 5. 命令:  6. 再次访问:      虚拟机:虚拟机ip:15672     本地则是:127.0.0.1:15672

    2024年01月18日
    浏览(62)
  • idea 控制台 打印 Tomcat日志Tomcat Catalina Log控制台乱码问题

    修改tomcat的日志配置文件 conf一logging.properties 修改【1catalina.org.apache.juli.AsyncFileHandler.encoding】的值为gbk

    2024年02月14日
    浏览(71)
  • weblogic 修改控制台路径或禁用控制台,解决weblogic安全扫描访问路径漏洞问题

    在⼀些安全漏洞扫描中,经常会扫描发现,使⽤weblogic管理控制台,会有个中危的漏洞。 出于安全的考虑需要对weblogic的console进行屏避,或者修改默认的访问路径,主要有两种方法,任选一种即可:(这里针对weblogic 11g 10.3.6.0) 1、进入默认的控制台,例如“localhost/console”

    2024年02月11日
    浏览(77)
  • 【教程】教你搭建控制台链接区块链网络,如何搭建FISCO-BCOS控制台

    目录 前言 配置及使用控制台 第一步. 准备依赖 第二步. 启动并使用控制台 部署及调用测试HelloWorld合约 第一步. 编写HelloWorld合约 第二步. 部署HelloWorld合约 第三步. 调用HelloWorld合约 随着区块链的发展,目前国内也掀起了一阵区块链的热潮,无论是金融、信任、交易、溯源等

    2024年02月10日
    浏览(66)
  • ip-guard控制台远程控制客户端的授权方式有几种?

    远程控制是通过控制台远程操作客户端机器,为网络管理提供方便,帮助管理员远程查看机器故障,快速解决系统问题。 共有三种远程控制客户端的授权方式: 1、用户授权 选定目标计算机,选择菜单“维护-远程控制”,控制台会弹出确定请求远程用户授权的提示框,点击

    2024年02月02日
    浏览(41)
  • 控制台输出vue实例

    控制台输出vue实例的两种方法: 在这里我想介绍一下在控制台输出vue实例的两种方法,我觉得其中一种不管是vue框架还是其他框架都是适用的, 我就不说是哪种方法了 大家都可以试一遍: 1、前后端分离的项目中,如果挂载的id名是app,我们可以在控制台中这么打印获取: 2、

    2024年02月10日
    浏览(72)
  • Minio控制台详细教程

    前言 此文讲解Minio控制台详细教程,可能会涉及到有些知识大家可能不懂情况。 需要知道Minio兼容的是AMS S3对象存储服务。需要知道AMS S3对象存储服务是什么,里面涉及的到配置如何去配等等。 https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/access_policies.html 登录Minio看板 部署的i

    2024年02月07日
    浏览(46)
  • C# 控制台进度条

    https://github.com/Mpdreamz/shellprogressbar

    2024年01月23日
    浏览(73)
  • windows控制台命令合集

    windows控制台命令 大集合 开始→运行→命令 集锦 winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 winchat--------XP自带局域网聊天

    2024年02月05日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包