簡體   English   中英

將用戶的int變量存儲到C中的數組中

[英]Storing int variable from user into array in C

我對C編程和這個論壇都還很陌生,但我想我可以嘗試一下。 我想要做的是讓用戶輸入4位數字。 從那里我想獲取數字並將其存儲在數組中,以便在需要時可以調用arr [2],依此類推。 在此先感謝您的幫助!

我真的很想知道這是怎么回事。 再次感謝

您的代碼不執行您認為的操作。 scanf從控制台讀取一行。 %d數字 (即123)而不是數字 (即1、2、3)匹配。 您可以循環調用printf ,而不是scanf (即,您捕獲一個數字並多次打印)。

實際上,我看到的不止這些-您假設C ++中的integer表示數字。 您的4個整數數組不包含4位數字-它包含4個獨立的整數,每個整數通常可以是-2147483648至+2147483648。

問題是,將數字分解成數字並不容易-因為“數字”是以10為基數(十進制),而計算機以2是二進制數。 相反,我們可以做的是將數字和數字讀和寫為text 讀取整數作為字符串,並將每個數字寫入字符:

#include <stdio.h>

int main()
{
    char input[4];

    //get input as text, instead of as a number
    printf ("Please enter a 4 digit number: ");
    scanf ("%s", input);

    for ( int i = 0; i < 4; i++ )
    {
        //print as char instead of as number
        printf ("%c\n", input[i]);
    }
}

此代碼並不完美。 如果用戶輸入“ blah”,它將打印“ b”,“ l”,“ a”,“ h”,而不是抱怨非數字輸入。 如果用戶輸入的字符數超過4個,我們保存該數字的字符數組將溢出,從而導致嚴重的安全風險和崩潰。

實現所需的行為存在多種可能性。 這是一種實現方法:

int arr[4];
int i;
char var1[4];

printf("Please enter a 4 digit number: ");
scanf("%s", var1);

for (i = 0; i < 4; i++ ) {
    arr [i] = var1[i] - '0'; // convert char to int
    printf("%d", arr[i]);
}
printf("\n");

var1是一個整數,您將其存儲在整數數組arr的每個元素中,因此輸出

如果要將每個數字存儲為字符,請使用fgets,或者如果要存儲數字,請執行

i=0;
while(var1){
     arr[len-i-1] = var1%10; //len is 4 in your case
     var1 /= 10;
     i--;
}

您已要求scanf讀取一個整數值。 您可能想要讀取一個字符串。

緊急情況下,您可以使用fgets

char number[5];
if( fgets(number, sizeof(number), stdin) != NULL )
{
    for( i = 0; i < 4; i++ ) {
        printf( "%c\n", number[i] );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM