为什么我应该在输入数组的同时在%c之前使用空格?

时间:2017-02-01 16:54:01

标签: c

我刚刚编写了一个程序来反转一个单词。我首先编写了如下程序:

//This program will reverse a given word

#include <stdio.h>
int main()
{
int letters, i, j;
printf("Enter the number of letters in your word: ");
scanf("%d", &letters);

int word[letters];

printf("Enter %d Letters: ", letters);
for( i = 0; i < letters; i++){
    scanf("%c", &word[i]);
}

for( j = i - 1; j >= 0; j-- ){
    printf("%c", word[j]);
}


return 0;
}

然后,我输入5来存储字母和单词&#34; rubel&#34; (忽略倒置的逗号)反转。预期的产量是&#34; lebur&#34;。但不幸的是我得到了ebur。然后我重新编译代码如下:

//This program will reverse a given word

#include <stdio.h>
int main()
{
int letters, i, j;
printf("Enter the number of letters in your word: ");
scanf("%d", &letters);

int word[letters];

printf("Enter %d Letters: ", letters);
for( i = 0; i < letters; i++){
    scanf(" %c", &word[i]);
}

for( j = i - 1; j >= 0; j-- ){
    printf("%c", word[j]);
}


return 0;
}

这次我得到的预期输出是&#34; lebur&#34;。现在,我的问题是在我没有得到预期的输出之前出了什么问题,而我刚刚做了一个空间,这次我得到了预期的结果。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在第一种情况下,word[0]成为\n(您输入了5\n)。在第二种情况下,\n被跳过,因为您告诉scanf跳过空格字符()。