使用C在数组中输入字符

时间:2014-12-06 08:01:30

标签: c

我正在尝试将字符作为数组中的输入: 我的代码是:

for(i=0;i<n ;i++)
    {
     b[i]= getchar();// scanf("%c",&b[i]) ;// scanf("%c" , v=getchar());
    }

我没有得到任何意见。有人可以建议我吗?

3 个答案:

答案 0 :(得分:3)

使用getchar函数如果按Enter键该字符也存储在该位置的那个数组中你应该使用scanf(&#34;%c&#34;,&amp; b [i]);

答案 1 :(得分:0)

当您输入一个字符后跟一个输入时,有两个字符,因此可以通过使用来忽略换行符。

scanf(" %c",&b[i];

%c之前的空格

答案 2 :(得分:0)

如果您尝试使用一行文字填充字符数组,那么scanf是适合该作业的工具。正如其他人提到的那样,您必须确保从输入缓冲区中删除newline字符'\n'(由[enter]生成),或者您尝试获取的下一个输入将显示为跳过('\n'仍然是您的预期输入)。

对于简单的文字行,scanf是正确的选择。但是,您必须提供将使用format string的正确newline,否则您将需要手动清空输入缓冲区。以下是一种实现方法的示例:

#include <stdio.h>

int main () {

    char b[50] = {0};        /* always initialize your variables */
    int i = 0;

    printf ("\n Enter all characters for your array: ");

    scanf ("%[^\n]%*c", b);  /* read array b from stdin, discard the newline */

    printf ("\n You entered: '%s'\n\n", b);

    while (b[i]) {
        printf ("  b[%2d] : %c\n", i, b[i]);
        i++;
    }

    return 0;
}

使用/输出:

$ ./bin/scanfbasic

 Enter all characters for your array: These are the chars in b.

 You entered: 'These are the chars in b.'

  b[ 0] : T
  b[ 1] : h
  b[ 2] : e
  b[ 3] : s
  b[ 4] : e
  b[ 5] :
  b[ 6] : a
  b[ 7] : r
  b[ 8] : e
  b[ 9] :
  b[10] : t
  b[11] : h
  b[12] : e
  b[13] :
  b[14] : c
  b[15] : h
  b[16] : a
  b[17] : r
  b[18] : s
  b[19] :
  b[20] : i
  b[21] : n
  b[22] :
  b[23] : b
  b[24] : .