如何用单个printf输出多行文本?输出末尾%符号问题解决
C语言printf相关问题解答
一、用单个printf输出多行文本
有几种实用方式实现:
- 在格式字符串中直接插入换行符
\n:printf("第一行内容\n第二行内容\n第三行内容"); - 利用C语言字符串自动拼接特性,拆分多行编写(无需额外转义):
printf("第一行内容" "第二行内容" "第三行内容\n"); - 用反斜杠实现代码换行(需手动添加
\n控制文本换行):printf("第一行内容\n\ 第二行内容\n\ 第三行内容");
二、合并printf后输出末尾出现%符号的原因及解决办法
问题现象
合并两次printf语句后,运行输出末尾多了一个%:
> Hey Bekhruz! input your Number here: <my input say:125> > Your number is: 125%
原因分析
这个%并非程序输出内容,而是终端shell的提示符(常见于zsh、bash等环境)。由于修改后的printf语句没有输出换行符\n,程序结束后shell直接在当前行末尾打印提示符,看起来就像是输出的一部分。原代码中第二个printf包含%d\n,自带换行符,所以shell会在下一行显示提示符,不会出现该问题。
解决办法
在合并后的printf格式串末尾添加换行符\n即可:
printf("Your number is: %d\n", thisNumber);
代码对比
原正常代码:
#include <stdio.h> // for print statments int main(int argc, char const *argv[]) { int thisNumber; printf("%s", "Hey you! input your Number here: " ); scanf("%d", &thisNumber ); printf( "%s","Your number is: " ); printf("%d\n", thisNumber ); return 0; }
修改后正确代码:
#include <stdio.h> // for print statments int main(int argc, char const *argv[]) { int thisNumber; printf("%s", "Hey you! input your Number here: " ); scanf("%d", &thisNumber ); printf( "Your number is: %d\n", thisNumber ); return 0; }
内容的提问来源于stack exchange,提问作者Bekhruz Suleymanov
相关产品推荐
相关产品推荐

