我是C编程语言的新手。
我需要单独输入用户输入的每个数字。
这是我的代码:
#include <stdio.h>
int main()
{
int n[100];
printf("Enter a number: ");
scanf("%d",&n);
printf("%d %d %d",n[1],n[2],n[3]);
return 0;
} //i know that my code is not assigning like i want.
现在例如用户输入的数字如123
,我想要输出1 2 3
,我如何将每个数字分配到n[i]
?
不使用string到int或int到atoi
之类的字符串?
以下是我将要做的事情:
用户将输入一个数字,程序将从行100x100中的行或列中搜索。我想我需要分别得到每一个数字来搜索。
答案 0 :(得分:3)
无需转到字符数组。可以使用n
计算数字n%10
的位数。然后,您可以使用n /= 10
删除最后一位数字。所以这个循环会以相反的顺序打印数字:
void print_rev_digits(int n) {
while (n) {
printf("%d\n", n%10);
n /= 10;
}
}
使用堆栈,您可以按正确的顺序打印数字。您也可以使用递归(它将为您使用堆栈)。我故意不发布完整的解决方案。
答案 1 :(得分:0)
在这种情况下,您应该逐个阅读用户输入字符:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int main()
{
char input[100];
int n[100];
printf("Enter a number: ");
if (fgets(input, sizeof(input), stdin)) { // attempt to read a line
int i;
for (i = 0; input[i]; i++) { // for each entered character
if (input[i] >= '0' && input[i] <= '9') { // is a digit
n[i] = input[i] - '0';
printf("%d ", input[i] - '0');
}
else if (isspace(input[i])) // end of entered integer
break;
else {
printf(stderr, "Input is not a number\n");
return -1;
}
}
printf("\n");
} else {
fprintf(stderr, "User did not enter valid input.\n");
}
return 0;
}