C Printf打印不需要的换行符

C Printf打印不需要的换行符,c,string,printf,newline,output,C,String,Printf,Newline,Output,==摘要== 我想打印一些东西,printf会自动在文本的某个地方添加一个“\n”。这似乎取决于输出的长度,因为当我更改文本以将其发布到此处时,位置发生了变化。但它不会在特定的字母或特定的位置添加新行(除非我不更改文本,那么它会保持在相同的位置) 示例输出: 文本“字符串”文本“第二个字符串 文本“XYZ” ==相关代码== 有问题的printf: printf("\ntext \"%s\" text \"%s\" text \"XYZ\".", string, second_string);

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

示例输出:

文本“字符串”文本“第二个字符串
文本“XYZ”

==相关代码==

有问题的printf:

printf("\ntext \"%s\" text \"%s\" text \"XYZ\".", string, second_string);
在等待enter键之前有一个getchar():

getchar();
这一切都在if语句中,就在该语句之前:

fgets(second_string, 100, stdin);
整个代码(“>”标记有问题的行):

#包括
#包括
#包括
#包括
字符字符串[20]=“字符串\0”;
字符第二个_字符串[100];
无效函数2(){
系统(“cls”);
printf(“文本”);
}
空函数(void){
函数2();
printf(“文本”);
fgets(第二个字符串,100,标准格式);
如果(strcmp(“第二个字符串”,第二个字符串)==0){
函数2();
}
否则{
函数2();
printf(“文本”);
getchar();
函数2();
>printf(“\ntext\%s\'text\%s\'text\'XYZ\”,字符串,第二个字符串);
fgets(第二个字符串,100,标准格式);
}
}
真空总管(真空){
函数();
}
==一些标题==
这是我问题的核心。请随意询问细节。我知道这个解决方案可能相当简单,但我在互联网上找不到它(可能我只是不擅长搜索),我需要它来上学。如果解决方案之前已经发布在某个地方,请随时提供链接,以便我可以阅读。 而且我是瑞士人,所以我的英语可能不是最好的:D

提前谢谢


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

从控制台读入新行字符时,
fgets
函数将新行字符复制到字符串中。因此,
second_string
以新行字符结尾,作为新行打印到屏幕上。如果不希望字符串出现,则需要将其从字符串中删除。

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

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

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

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

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

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

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

如果您不知道,
fgets()
stdin
中的尾随换行符保留为其结果数组中的最后一个字符。您可能想考虑这一点。如果您不知道,<代码> FGETSH()/代码>保留尾部换行符从<代码> STDIN < /代码>作为其生成数组中的最后一个字符。您可能想考虑这一点。如果您不知道,<代码> FGETSH()/代码>保留尾部换行符从<代码> STDIN < /代码>作为其生成数组中的最后一个字符。您可能想考虑这一点。如果您不知道,<代码> FGETSH()/代码>保留尾部换行符从<代码> 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();
}