Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c中的if()有些奇怪_C_String_If Statement_Struct - Fatal编程技术网

c中的if()有些奇怪

c中的if()有些奇怪,c,string,if-statement,struct,C,String,If Statement,Struct,这是我正在做的一个学校项目,它只是代码的一小部分,但出于某种原因,无论输入是什么,程序似乎都没有进入if()内部。我已经尝试了所有我知道的东西(也使用了isalpha()函数),但它只是无法运行if()中的命令 do { flag=1; 获取(input.number); printf(“\n%s\n”,输入.number); 对于(i=0;i我假定您声明了char input.number[] if中的条件表示,如果字符不是数字,则只希望进入其正文。这与变量的名称input.number存在某

这是我正在做的一个学校项目,它只是代码的一小部分,但出于某种原因,无论输入是什么,程序似乎都没有进入if()内部。我已经尝试了所有我知道的东西(也使用了isalpha()函数),但它只是无法运行if()中的命令

do
{
flag=1;
获取(input.number);
printf(“\n%s\n”,输入.number);

对于(i=0;i我假定您声明了
char input.number[]



if
中的条件表示,如果字符不是数字,则只希望进入其正文。这与变量的名称
input.number
存在某种矛盾(但可能您只是在此处检查不正确的字符…

为了更好地了解条件发生了什么,可以选择打印其组件的值,如下所示:

printf("%c[%d]", input.number[i], input.number[i]); 

printf("%d, %d, %d\n", input.number[i]<48 , input.number[i]>57, input.number[i]<48 || input.number[i]>57);
printf(“%c[%d]”,input.number[i],input.number[i]);
printf(“%d,%d,%d\n”,input.number[i]57,input.number[i]57);
(0表示假,1表示真)

顺便说一句:您可以使用如下char常量以更可读的方式编写相同的条件:
input.number[i]'9')

什么类型的
input.number
?也许您的编译器试图通过将
get
视为nop而不是最初定义的愚蠢危险的函数来拯救您自己造成的伤害?使用
fgets()
…您确定<1000或>9999部分吗?已完成任何基本调试,如
printf(“%d”,input.number[i])
查看您正在处理什么?请确切告诉我们您尝试了哪些测试输入。此外,最佳做法是不要使用像
48
57
这样的幻数。而是使用
'0'
'9'
。最后,要检查字符串是否可以解析为有效数字,建议使用or。“这在某种程度上与名称input.number相矛盾”。OP的目的是验证每个字符是否为有效的数字。该条件检查无效字符,并设置一个标志来指示无效输入。非常感谢您的输入,但结果证明答案要简单得多(甚至让人觉得自己很愚蠢)比我预期的要多。我的错误是,在我检查长度(9999)的部分,数字是等待偏离目标…它应该是4。或者是排序!=4
printf("%c[%d]", input.number[i], input.number[i]); 

printf("%d, %d, %d\n", input.number[i]<48 , input.number[i]>57, input.number[i]<48 || input.number[i]>57);