试图在C中打印字符数组

时间:2014-04-05 02:37:12

标签: 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]); 
    }    

    getch();
}

Input: Bangalore is in India
Output: Bangalore

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

scanf()%s格式跳过前导空格,然后扫描非空格字符并停在输入行的下一个空格处。

这意味着只会读取Bangalore,因此只会打印Bangalore

如果您需要整行输入,则应该使用fgets()

您还应该从编译器收到有关打印代码的警告。你可能想在没有循环的情况下使用它:

printf("%s\n", str);

或循环中的这个:

printf("%c", str[i]);

虽然这会更快:

putchar(str[i]);

你需要担心最后添加换行符(循环后putchar('\n');)。

答案 1 :(得分:1)

如果遇到空格或新行,从终端读取输入将停止。你可以做两件事来得到你需要的东西

  1. 使用fgets,例如:fgets(str, 100, stdin)
  2. 告诉scanf读取输入,而不是像scanf ("%[^\n]%*c", str);
  3. 这样的新行

    第二件事,如果要打印字符数组,则必须使用%c

答案 2 :(得分:0)

阅读手册页

你需要%c而不是%s