Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在C中打印字符数组_C - Fatal编程技术网

尝试在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]);

我试图打印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]); 
    }    

    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,例如:
    fgets(str,100,stdin)
  • 告诉scanf读取输入,而不是像这样的换行符
    scanf(“%[^\n]%*c”,str)

  • 第二件事,如果要打印字符数组,必须使用%c,如果遇到空格或新行,从终端读取输入将停止。你可以做两件事来得到你需要的

  • 使用fgets,例如:
    fgets(str,100,stdin)
  • 告诉scanf读取输入,而不是像这样的换行符
    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()
    及其相关项是极其困难的。从表面上看,它们非常简单,但一旦你开始与它们做真正的生意,它们就会变得非常复杂。