printf输出出现非预期换行问题,待打印变量通过fgets读取获取
问题根因
- 该换行问题与Visual Studio开发环境无关,是
fgets函数的标准固有行为导致:fgets从标准输入读取内容时,会将你按下回车键输入的\n换行符一同存储到目标字符串的末尾,因此你存放在name、client字段中的字符串本身就携带了换行符,printf输出时自然会触发换行效果。
修复方案
你只需要在每次调用fgets读取输入后,手动移除字符串末尾的换行符即可,参考实现代码如下:
#include <string.h> // 需要先引入该头文件才能使用strchr函数 fgets(database_publishers[pointer].name, STRING_SIZE, stdin); // 查找字符串中是否存在末尾换行符并移除 char *p_newline = strchr(database_publishers[pointer].name, '\n'); if (p_newline != NULL) { *p_newline = '\0'; }
对client字段的输入也做同样处理即可解决输出换行的问题。
内容的提问来源于stack exchange,提问作者f4ll1nnn
相关产品推荐
相关产品推荐

