[英]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.