==摘要==
我想打印一些东西,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
提前致谢!
如果有人想抱怨这个可能是多余信息的墙,我只想提供尽可能多的信息。顶部有一个摘要。它掌握了基本信息。
答案 0 :(得分:2)
fgets
会保留换行符,如果有的话。 \n
中有隐式second_string
。因此,在第二个双引号字符串中,您将始终在结束引号之前看到换行符。
答案 1 :(得分:1)
fgets
函数会在从控制台读取新行字符时将其复制到字符串中。因此second_string
以新行字符结尾,并以新行的形式打印到屏幕上。如果您不希望它出现,则需要从字符串中删除