如何在 C 中使用 printf() 和 scanf() 而不进入下一行?

2024-02-01

我想在一行中获取出生日期:

#include <stdio.h>

int main()
{
    int BirthYear,BirthMonth,BirthDay;
    printf("Please enter your birth date: ");
    scanf("%d",&BirthYear);
    printf("/");
    scanf("%d",&BirthMonth);
    printf("/");
    scanf("%d",&BirthDay);
    return 0;
}

这是我的输出:

Please enter your birth date: YYYY
/MM
/DD

但我想得到这样的东西:

Please enter your birth date: YYYY/MM/DD

在输出中,它在每次 scanf() 之后转到下一行,而不使用 \n。 我使用 VS Code 进行 IDM。


这是使用 ansi 控制字符的解决方法。我不会这样做,只是为了表明这是可能的:

#define PREVLINE "\033[F"
#define MSG "Please enter your birth date: "

int main(void) {
    int BirthYear,BirthMonth,BirthDay;
    
    printf(MSG);
    scanf("%d",&BirthYear);
    printf(PREVLINE MSG "%d/", BirthYear);
    scanf("%d",&BirthMonth);
    printf(PREVLINE MSG "%d/%d/", BirthYear, BirthMonth);
    scanf("%d",&BirthDay);
    printf("You entered: %d/%d/%d\n", BirthYear, BirthMonth, BirthDay);
}

请注意,这不是便携式的。终端需要支持此功能才能工作。 AFAIK 没有 100% 可移植的方法来实现这一点。

如果您想真正做到这一点,那么我建议您看看ncurses 库 https://en.wikipedia.org/wiki/Ncurses

Note:

始终检查返回值scanf来检测错误。

Note2:

添加可能是个好主意fflush(stdout);每个之后printf陈述。

实际上我今天写了另一个关于 ascii 控制字符的答案。这可能很有趣:https://stackoverflow.com/a/64549313/6699433 https://stackoverflow.com/a/64549313/6699433

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C 中使用 printf() 和 scanf() 而不进入下一行? 的相关文章

随机推荐

  • CountDownTimer 更新和阻塞

    如果正确理解 CountDownTimer 它不会在启动它的活动的单独线程上运行 那么这是否意味着如果我在主活动中启动 CountDownTimer 并且稍后在该活动中阻塞另一段代码 这是否意味着 CountDownTimer 将不再更新
  • Oracle DBMS_LOB.WRITEAPPEND 到 Postgres 转换

    有人可以告诉我如何将下面的 Oracle 代码转换为 Postgresql IF prodNum 1 THEN DBMS LOB WRITEAPPEND pkgFilterNode LENGTH pkgFilter tab
  • 将 geoNear 查询与另一个值查询结合起来

    我有一个使用 node js mongodb 和 mongoose 实现的地理数据 api 我想用两个条件查询我的数据 首先 我使用 geoNear 来获取给定半径内的所有位置 效果很好 其次 我想按类型进一步过滤位置 这是我的架构 var
  • 美化 PHP 上以字符串形式存储的 HTML

    我的变量中有一个字符串 html包含精简的 HTMl 代码 全部在一行中 例如 html div p hello p div 如何美化 漂亮地打印 HTML 以便我的变量变成这样 html div p hello p div 我知道tidy
  • document.form.submit();不会在 Safari 中提交

    我正在使用 JavaScript 函数来提交我的表单 这适用于除 safari 之外的所有浏览器 我不明白为什么 我的 JavaScript 函数看起来像这样 function submitForm var selectBox sel gu
  • 尝试将 log 方法应用于 Python 中的 pandas dataframe 列时出错

    所以 我对 Python 和 Pandas 以及一般编程 非常陌生 但在一个看似简单的函数上遇到了麻烦 因此 我使用通过 SQL 查询提取的数据创建了以下数据框 如果您需要查看 SQL 查询 请告诉我 我将粘贴它 spydata pd Da
  • .NET 跟踪文件不起作用

    我正在尝试使用指向文件位置的 TextWriterTraceListener 来跟踪 Windows 窗体应用程序中发生的奇怪事情 我对其进行了设置 以便应用程序第一次需要在程序运行期间跟踪某些内容时 它会创建跟踪侦听器并注册它 但是 跟踪
  • 使用 Mod_rewrite 将 HTTP 重定向到 HTTPS

    我需要重定向自http test glad redirect TO https test glad start do 主要问题是我需要维护请求中的 POST 参数 我无法使用标准 http 重定向来执行此操作 因为 POST 参数不会按照
  • Git Rebase 期间的 Git Commit - 到底发生了什么?

    我正在寻找一个很好的描述 说明如果在变基期间提交会发生什么 以及如何以一种简单的方式 恢复 这一情况 让我们考虑一个场景 其中一个大型提交被重新设定 在变基期间出现冲突 用户开始合并更改 现在 想象一下这样一个场景 你快完成了 但你没有打电
  • igraph中的社区检测算法有什么区别?

    我有一个大约 100 个 igraph 对象的列表 其中一个典型对象具有大约 700 个顶点和 3500 个边 我想确定其中更有可能存在联系的顶点组 我的计划是使用混合模型来使用顶点和组属性来预测有多少组内联系顶点 有些人可能想对我的项目的
  • 区分 UITableView 编辑状态?

    我一直在尝试区分 UITableView 中的编辑状态 我只需要在点击编辑按钮后处于编辑模式时调用一个方法 因此当您滑入单元格时 您会看到小圆形删除图标 但当用户滑动删除时则不会 无论如何我可以区分两者吗 Thanks EDIT 感谢罗德里
  • 导航栏,标题位于中心,按钮位于右侧

    因此 我尝试创建一个导航栏 其标题位于中心 按钮显示在右侧 正如您所看到的 当我尝试执行此操作时 按钮出现在下一行并位于 div 之外 Fiddle https jsfiddle net ck18vjpn 1 title bar backg
  • 如何声明/忽略缺失的 JSX 类型?

    我想使用SVG use element https developer mozilla org en US docs Web SVG Element use in a tsx file
  • 如何解压方法参数来为其分配类属性?

    我经常做这样的事情 class Box def init self some setup stuff def configure self color ffffff weight 1 empathy 97 angle x 0 angle y
  • 使用 Glide 库显示模糊图像

    我正在尝试使用显示模糊图像Glide而是显示错误图像 我不知道为什么显示错误图像 URL工作正常 但仍然仅显示错误图像 这是我的代码 Glide with context load http www gadgetsaint com wp c
  • 如何解决此错误 命令 PhaseScriptExecution 失败并出现非零退出代码

    I hade changed my Mac to MacBook m1 and my Xcode V is 12 4 my project run normally on simulator but doesn t on the real
  • 如何从列表中删除整数? [复制]

    这个问题在这里已经有答案了 我需要从整数数组列表中删除整数 我对字符串和其他对象没有问题 但是当我删除时 整数被视为索引而不是对象 List
  • 使用 d3.js 绘制半实心圆

    我正在尝试用 d3 js 创建一个半实心圆 就像this http www indezine com products powerpoint learn shapes images halfcirles2010 8 jpg 我没有找到任何如
  • 如何捕获 Javascript 中的 404 错误?

    我有一个 HTML 音频元素 并且我将该元素的 src 属性动态设置为存储在局域网上的音频文件 它是这样工作的 function setSource source audio src source var audio new Audio v
  • 如何在 C 中使用 printf() 和 scanf() 而不进入下一行?

    我想在一行中获取出生日期 include