【发布时间】:2016-03-08 17:35:14
【问题描述】:
我正在做一个课堂项目,我想做一些额外的事情并对我的数据进行验证。问题似乎发生在num1 = num1Input(和num2 = num2Input),它正在获取位置(我假设)而不是实际输入值
int main(void) {
//variables
char num1input[10];
char num2input[10];
int length, i;
int num1 = 0;
int num2 = 0;
int countErrors1 = 0;
int countErrors2 = 0;
bool correct1 = false;
bool correct2 = false;
//--end of variable declarations--//
do {
printf("Please enter a number: ");
scanf("%s", num1input);
length = strlen(num1input);
for (i = 0; i < length; i++) {
if (!isdigit(num1input[i])) {
countErrors1++;
}
}
if (countErrors1 > 0) {
printf("Input is not a number \n");
} else {
correct1 = true;
}
} while (correct1 == false);
num1 = num1input;
do {
printf("Please enter second number: ");
scanf("%s", num2input);
length = strlen(num2input);
for (i = 0; i < length; i++) {
if (!isdigit(num2input[i])) {
countErrors2++;
}
}
if (countErrors2 > 0) {
printf("Input is not a number \n");
} else {
correct2 = true;
}
} while (correct2 == false);
num2 = (int)num2input;
printf("%d %d \n", num1, num2);
int addition = num1 + num2;
int substraction = num1 - num2;
int multiplication = num1 * num2;
float division = num1 / num2;
printf("Addition: %d Subtraction: %d Multiplication: %d Division: %.1e", addition, substraction, multiplication, division);
getch();
}
【问题讨论】:
-
C 在强制转换时不进行十进制到二进制的转换。您正在寻找
strtol。 -
我只希望num1Input中的值存储在num1中。我能做什么?
-
你使用
strtol,就像我说的。 (另外,忘记你曾经听说过scanf,它是按规定损坏的;在 C 中用于用户输入的正确函数是getline(如果可用),否则是fgets。) -
"多做一点,对我的数据进行验证" --> 太好了!请注意
isdigit(num1input[i])将失败'-'。研究strtol().
标签: c