尝试在C中打印字符数组
我试图打印C中的字符数组,但如果出现任何空格,该数组将不打印。这是我的代码:尝试在C中打印字符数组,c,C,我试图打印C中的字符数组,但如果出现任何空格,该数组将不打印。这是我的代码: int main() { char str[100]; int len = 0; printf("Enter the string"); scanf("%s", str); len = strlen(str); int i = 0; for (i = 0; i < len; i++) { printf("%s", str[i]);
int main() {
char str[100];
int len = 0;
printf("Enter the string");
scanf("%s", str);
len = strlen(str);
int i = 0;
for (i = 0; i < len; i++) {
printf("%s", str[i]);
}
getch();
}
有什么建议吗?阅读手册页面
您需要%c而不是%s阅读手册页
您需要使用%c而不是%s
,则%s
格式跳过前导空格,然后扫描非空格字符并在输入行中的下一个空格处停止
这意味着只读取Bangalore
,因此只打印Bangalore
如果需要整行输入,可能应该使用fgets()
您还应该收到编译器关于打印代码的警告。您可能希望在不使用循环的情况下使用它:
printf("%s\n", str);
或者在一个循环中:
printf("%c", str[i]);
虽然这会更快:
putchar(str[i]);
您需要担心在循环的末尾(putchar('\n');
之后)添加一个换行符
,则%s
格式跳过前导空格,然后扫描非空格字符并在输入行中的下一个空格处停止
这意味着只读取Bangalore
,因此只打印Bangalore
如果需要整行输入,可能应该使用fgets()
您还应该收到编译器关于打印代码的警告。您可能希望在不使用循环的情况下使用它:
printf("%s\n", str);
或者在一个循环中:
printf("%c", str[i]);
虽然这会更快:
putchar(str[i]);
您需要担心在循环结束后(
putchar('\n');
)添加换行符。如果遇到空格或换行符,从终端读取输入将停止。你可以做两件事来得到你需要的
fgets(str,100,stdin)
scanf(“%[^\n]%*c”,str)代码>
第二件事,如果要打印字符数组,必须使用%c,如果遇到空格或新行,从终端读取输入将停止。你可以做两件事来得到你需要的
fgets(str,100,stdin)
scanf(“%[^\n]%*c”,str)代码>
第二件事,如果要打印字符数组,必须使用%c%c是您想要的,而不是%s
%s
是字符串的格式说明符。您试图一次打印一个字符(str[i]
)。因此,您应该或者只执行一次printf(“%s\n”,str)代码>或者,在循环中,执行printf(“%c”,str[i])
并在其后加上printf(“\n”)代码>(换行符字符串)或putch('\n')代码>(换行符)。此外,scanf在空格处停止。这可能不太相关,但您考虑过使用它吗?它不适用于%c。。。它正在打印相同的%c是您想要的,而不是%s%s
是字符串的格式说明符。您试图一次打印一个字符(str[i]
)。因此,您应该或者只执行一次printf(“%s\n”,str)代码>或者,在循环中,执行printf(“%c”,str[i])
并在其后加上printf(“\n”)代码>(换行符字符串)或putch('\n')代码>(换行符)。此外,scanf在空格处停止。这可能不太相关,但您考虑过使用它吗?它不适用于%c。。。它正在印刷同样的东西,即使这只会印刷班加罗尔。。。。我希望打印整个字符串…要读取整个字符串,而不仅仅是班加罗尔
,您必须读取整个字符串。正如我所说,除非您想在scanf调用中使用%99[^\n]“
而不是%s”
,否则您需要使用fgets()
。正确使用scanf()
及其相关项是极其困难的。从表面上看,它们非常简单,但一旦你开始与它们做真正的生意,它们就变得非常复杂。即使是这本书,也只能印在班加罗尔。。。。我希望打印整个字符串…要读取整个字符串,而不仅仅是班加罗尔
,您必须读取整个字符串。正如我所说,除非您想在scanf调用中使用%99[^\n]“
而不是%s”
,否则您需要使用fgets()
。正确使用scanf()
及其相关项是极其困难的。从表面上看,它们非常简单,但一旦你开始与它们做真正的生意,它们就会变得非常复杂。