我的代码有问题,好消息是我确实查明了问题,坏消息是我不明白为什么这是一个问题.这应该是返回还是退出?这是我的getNums()函数,...到目前为止.首先我的代码调用getLine()获取行并返回其字符长度.然后给出nums,行,行的长度,以及将数字放入的空数组.并且假设返回它刚刚放入的数字的数量.
int getNums(char s[], int endMarker, int numarray[])
{
char c;
double value;
int counter =0;
int i,j;
for(i=0;i<endMarker;i++) {
while ((c=s[i]!='\n')&&(c!=' ')) {
//errors
if ( (c<'0') || (c>'9') ) {
return(-1); //was exit testing return, **this always kicks me out**
if( counter > 6){
return(-2);
} //was exit testing return
s[i]=c;
i++;
value = value*10+'c'-'0';
}else
numarray[j]=value;
j++;
counter++;
}
if ((c=getchar())==' ') {
i++;
}
}
return (counter);
printf("%c,%c:",counter,value); // for testing
}
Run Code Online (Sandbox Code Playgroud)
c=s[i]!='\n'没有做你认为它正在做的事情.不等式运算符的优先级高于赋值运算符.c如果s[i]不等于变量,则变量将设置为1,如果变量相等'\n',则变量将设置为0.
您应该将赋值移动到先前的语句,或者在括号周围添加括号.