gpt4 book ai didi

c - 有没有办法让变量只取某些值?

转载 作者:行者123 更新时间:2023-12-05 04:29:09 25 4
gpt4 key购买 nike

有没有办法定义一个变量,例如只接受 1 到 100 之间的一个值?

如果用户尝试分配一个超出此区间的值,程序会报错。

我不是在寻找像这样的输入控制算法:

#include <stdio.h> 

int main ( ) {
int n ;
printf("give an interger number between 1 and 100 : ");
scanf("%d",&n);

while ( n < 1 || n > 100 )
{
printf("given value is wrong\ngive a new value between 1 and 100 : ");
scanf("%d",&n);
}
return 0 ;
}

最佳答案

Is there any way to define a variable for example that only accepts one values from 1 to 100?

不,不直接。


或者,形成一个struct 并提供get 和set 函数。 Information hiding .用户只能使用函数设置变量。

struct a1to100;
bool a1to100_set(struct a1to100 *a, val); // Return error flag.
int a1to100_read(struct a1to100 *a); // Return 1 on success, EOF on end-of-file
int a1to100_get(const struct a1to100 *a); // Return value

struct a1to100 *a1to100_create(void);
void a1to100_free(struct a1to100 *a);

或者创建一个辅助函数来读取 int 子范围。示例:

int read_int_subrange(int min, int max, int value_on_eof) {
char buf[100];
printf("Give an integer number between %d and %d : ", min, max);

while (fgets(buf, sizeof buf, stdin)) {
char *endptr;
errno = 0;
long val = strtol(buf, &endptr, 0);
if (endptr > buf && *endptr == '\n' && errno == 0 && val >= min && val <= max) {
return (int) val;
}
printf("Given value is wrong\nGive a new value between %d and %d :\n",
min, max);
}

return value_on_eof;
}

关于c - 有没有办法让变量只取某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72433798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com