Printf打印不需要的换行符

时间:2014-01-30 15:54:33

标签: 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

提前致谢!

如果有人想抱怨这个可能是多余信息的墙,我只想提供尽可能多的信息。顶部有一个摘要。它掌握了基本信息。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

fgets函数会在从控制台读取新行字符时将其复制到字符串中。因此second_string以新行字符结尾,并以新行的形式打印到屏幕上。如果您不希望它出现,则需要从字符串中删除