如何将getchar()读取的整数保存到数组中?

时间:2016-03-24 16:44:26

标签: c arrays getchar

我正在尝试创建一个程序,它将使用getchar()读取三个整数并将其存储在数组中,但我的代码中存在错误。

#include <stdio.h>
int main( )
{
    printf("Please enter three digit number 100 to 999: ");
    int numEntered[2];
    numEntered = getchar();
    for (int i = 0; i<3; i++) {
        printf("%d", numEntered[i])
    }
}

4 个答案:

答案 0 :(得分:1)

试试这个:

#include <stdio.h>

int main(){

    printf("Please enter three digit number 100 to 999: ");

    int numEntered[3];

    for (int i = 0; i<3; i++){
        scanf("%d", &numEntered[i]);
        printf("%d", numEntered[i]);
    }

    return 0;  
}

你需要在for循环中读取一个值!第二件事,通过使用getchar()读取,你得到字符的ascii值,所以..如果你读“1”并用%d打印,你实际打印49!

请参阅此处的ascii表:http://www.asciitable.com/index/asciifull.gif

答案 1 :(得分:1)

让我们试着在这里思考问题:

  • 您想要读取并存储整数值吗?如果是 - &gt;使用scanf
  • 你想逐位读数吗?如果是 - &gt;使用getchar
  • 你想确定你所读的内容有3位数吗?如果是的话......如果没有,你会怎么做?
  • 如果逐位读数,请确保您正在阅读数字; getchar读取字符 - &gt;使用atoi功能或检查ascii值;

将所有内容放在一起(做出一些假设):

int main()
{
   char digits[3]; // don't use ints to store chars...
   printf("enter the 3 digit number - 100 to 999: ");   

   for (int i=0;i<3;i++) // only the first 3 chars are read
   {
       char c = getchar();
       if (char < '0') || (char > '9')
       {
           printf("invalid digit!");
           exit(0);
       }
       digits[i] = c;
   }

   printf("the number entered is: %c%c%c", digits[0],digits[1],digits[2]);
}

答案 2 :(得分:0)

您不使用getchar来获取整数值。 改为使用scanf()。

试试这个:

#include <stdio.h>
int main( )
{    
printf("Please enter three digit number 100 to 999: ");
int numEntered[3];  
for (int i = 0; i<3; i++){
   scanf("%d",&a[i]);
   printf("%d", numEntered[i]);
}
}

答案 3 :(得分:0)

numEntered = getchar();
(1)它不能分配给数组本身 (2)getchar()读取一个字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(void){
    char digits[4]  = {0};//4: 3 character + NUL character
    int ch, value;

    do {
        printf("Please enter three digit number 100 to 999: ");
        for(int i = 0; i < 3 && (ch = getchar()) != '\n' && ch != EOF; ++i){
            digits[i] = ch;
        }
        if(ch != '\n')
            while((ch = getchar()) != '\n')
                if(!isspace(ch))//invalid input
                    *digits = 0;

        value = atoi(digits);
    } while(value < 100 || 999 < value);

    char *rotate_left(char digits[4]);

    printf("%d\n", value);
    printf("%d\n", atoi(rotate_left(digits)));
    printf("%d\n", atoi(rotate_left(digits)));

    return 0;
}

char *rotate_left(char digits[4]){
    char temp = digits[0];
    digits[0] = digits[1];
    digits[1] = digits[2];
    digits[2] = temp;
    return digits;
}