我的任务是创建数组,为了做到这一点,我需要输入大小,但我必须确保输入不是负数,字母或符号。我创建了这样做的功能,但我的if不能正常工作。如果我输入负数或字符,它仍然使用它。
这是我使用的功能:
void getsize(int* size){
printf("Enter the size of array\n");
if ((scanf("%d", size) == 1) && (getchar() == '\n') && (size > 0)){
printf("Size: %d entered\n", *size);
} else {
printf("wrong input\n");
while(getchar() != '\n');
}
}
getsize(&size);
答案 0 :(得分:3)
主要问题是,你将值的地址与0进行比较。size
是一个指针,所以使用:
(*size > 0)
而不是
(size > 0)
答案 1 :(得分:2)
您正在将指针与0
进行比较,而不是您在其指向的内存位置中存储的值。在if
内,请使用以下内容作为最终比较:
... (*size > 0)) { ... }
答案 2 :(得分:1)
。你正在检查size > 0
这应该是*size > 0
答案 3 :(得分:0)
void getsize(int* size){
printf("Enter the size of array\n");
if ((scanf_s("%d", size) == 1) && (getchar() == '\n') && (*size > 0)){
printf("Size: %d entered\n", *size);
}
else {
printf("wrong input\n");
while (getchar() != '\n');
}
}
这对我有用。只需将尺寸> 0更改为*尺寸> 0,因为您必须检查值,而不是地址。