c - Printf 打印不需要的换行符

标签 c string printf newline output

<分区>

== 总结==
我想打印一些东西,printf 以某种方式自动在文本中的某处添加了一个“\n”。这似乎取决于输出的长度,因为当我更改文本以将其发布到此处时位置发生了变化。但它不会在特定字母或特定位置添加新行(除非我不更改文本,否则它会保持在相同位置)。

示例输出:

text "string" text "second_string
" text "XYZ".

== 相关代码==

有问题的 printf:

printf("\ntext \"%s\" text \"%s\" text \"XYZ\".", string, second_string);

在等待回车键之前有一个getchar():

getchar();

这一切都在一个 if 语句中,就在这个语句之前:

fgets(second_string, 100, stdin);

整个代码('>'标记有问题的行):

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

char string[20] = "string\0";
char second_string[100];

void function2() {

  system("cls");
  printf("text");    

}

void function(void) {  

  function2();  

  printf("text");

  fgets(second_string, 100, stdin);

  if (strcmp("second string", second_string)==0) {
    function2();
  }
  else {

    function2();
    printf("text");
    getchar();

    function2();
>   printf("\ntext \"%s\" text \"%s\" text \"XYZ\".", string, second_string);

    fgets(second_string, 100, stdin);

  }

}

void main(void) {
  function();
}

== 一些标题==
这是我问题的核心。欢迎询问详情。我知道解决方案可能非常简单,但我无法在互联网上的任何地方找到它(可能我只是不擅长搜索)并且需要它用于学校。如果解决方案之前已经发布在某个地方,请随时提供一个链接,以便我阅读它。 另外我是瑞士人,所以我的英语可能不是最好的 :D

提前致谢!

如果有人想提示这堵可能是冗余信息的墙,我只想提供尽可能多的信息。顶部有一个摘要。它包含基本信息。

最佳答案

fgets 保留换行符(如果有的话)。您在 second_string 中有一个隐式 \n。因此,在第二个双引号字符串中,您总是会在结束引号之前看到一个换行符。

关于c - Printf 打印不需要的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461205/

相关文章:

c - nn_send 完成后,nn_socket 将禁止立即以 Req/Rep 模式发送下一条数据

无法使用 fopen 读取 UTF8 编码的文件(文件, "r,ccs=UTF-8")

java - Eclipse - 将鼠标悬停在标记上时的自定义文本

c - 将乱码写入文件?

c++:打印具有指定长度的字符串

c - 我假设下面的 C 代码做了一些事情。但它没有按照我的假设工作。请检查我的假设有什么问题?

oracle - PLSql 返回值

python - 如何识别字符串中的单个数字以插入前导零?

python - 为什么这个从另一个字符串中删除第一次出现的字符串的函数无法正常工作?

c - C 中的 unsigned int 为负