Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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 新手看不出代码出错的原因,但知道在哪里出错_C - Fatal编程技术网

C 新手看不出代码出错的原因,但知道在哪里出错

C 新手看不出代码出错的原因,但知道在哪里出错,c,C,我的代码有一个问题,好消息是我实际上指出了问题,坏消息是我不明白为什么它是一个问题。这也应该是返回还是退出?这是我的getNums函数,…到目前为止。首先,我的代码调用getLine,它获取行并返回其字符长度。然后给出get nums、行、行的长度和一个空数组来输入数字。假设返回刚刚输入的数字 int getNums(char s[], int endMarker, int numarray[]) { char c; double value; int counter =

我的代码有一个问题,好消息是我实际上指出了问题,坏消息是我不明白为什么它是一个问题。这也应该是返回还是退出?这是我的getNums函数,…到目前为止。首先,我的代码调用getLine,它获取行并返回其字符长度。然后给出get 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
}

除了没有正确缩进之外,代码还有几个问题。我会在看到他们的时候称呼他们

我认为你不想在for循环中使用while循环。您已经在使用for遍历字符串中的每个字符。也许您想根据“n”和“”检查每个字符,对于这两个字符,您只需使用if

再看一眼,您似乎试图对字符串进行两次迭代,因为您有两个循环,并且在两个不同的位置执行i++操作。这让我相信你还没有完全想出你的算法。我认为你应该坐下来写一些伪代码。在编写一行代码之前,用通俗易懂的英语一步一步地列出您希望函数完成的任务,并确保它在逻辑上是合理的

此外,如果从函数返回,该函数将停止执行。因此,如果您只想跳过执行循环的迭代,请改用continue。看看你的代码,我想你可能有一个回报,你真的想继续


您能否缩进代码以使其更可读、更易于理解?

除了没有正确缩进之外,您的代码还有几个问题。我会在看到他们的时候称呼他们

我认为你不想在for循环中使用while循环。您已经在使用for遍历字符串中的每个字符。也许您想根据“n”和“”检查每个字符,对于这两个字符,您只需使用if

再看一眼,您似乎试图对字符串进行两次迭代,因为您有两个循环,并且在两个不同的位置执行i++操作。这让我相信你还没有完全想出你的算法。我认为你应该坐下来写一些伪代码。在编写一行代码之前,用通俗易懂的英语一步一步地列出您希望函数完成的任务,并确保它在逻辑上是合理的

此外,如果从函数返回,该函数将停止执行。因此,如果您只想跳过执行循环的迭代,请改用continue。看看你的代码,我想你可能有一个回报,你真的想继续


你能缩进你的代码使它更可读,更容易理解吗?

只要看一下代码,它似乎在很多地方都有很多问题。至少在国际海事组织,第一个可能也是最大的问题是,它真的应该被分解成若干独立的功能

第二,格式很差。例如,缩进使某些语句看起来像是由一个if控制的,而事实并非如此

第三,类型不匹配,将int和double传递给printf,但同时使用%c字符转换


可能还有更多,但除非你理顺这些,特别是缩进,否则试图找出更多可能是浪费时间。

只要看一下代码,它似乎在许多地方都有一些问题。至少在国际海事组织,第一个可能也是最大的问题是,它真的应该被分解成若干独立的功能

第二,格式很差。例如,缩进使某些语句看起来像是由一个if控制的,而事实并非如此

第三,类型不匹配,将int和double传递给printf,但同时使用%c字符转换

可能还有更多,但除非你弄直这些,特别是压痕,否则试图找出更多可能是浪费时间。

c=s[i]!='\不是在做你认为它在做的事。不等式运算符的优先级高于赋值运算符。如果s[i]不等于'\n',变量c将设置为1,如果s[i]等于'\n',变量c将设置为0

您应该将赋值移到前面的语句中,或者在其周围加上括号。

c=s[i]!='\不是在做你认为它在做的事。不等式运算符的优先级高于赋值运算符。如果s[i]不等于'\n',变量c将设置为1,如果s[i]等于'\n',变量c将设置为0


您应该将作业移到前面的语句中,或者在其周围加上括号。

我认为在解决当前问题之前,您至少应该尝试阅读或类似的内容。看来你完全不知道自己在干什么
g、 在您至少对C有了一点了解之后,解决方案应该很简单。

我认为您在试图解决当前问题之前,至少应该尝试阅读或类似的内容。似乎您完全不知道自己在做什么,在您至少对C有了一点了解之后,解决方案应该是微不足道的。

arrrgggggghh!正确缩进代码。对不起,我还没有学会正确的缩进方法。我们的指导老师说他会在本周的某个时候给我们发一份指南。代码要么太乱,无法识别j的初始化,要么没有j的初始化。在任何情况下都是不好的。在添加到sizeofnumarray之前,需要检查sizeofnumarray,以防结束缓冲区溢出。我假设你打算把{}放在numaray[j]=value的周围;j++;计数器++@MattSmith sizeofnumarray==此函数内的sizeofint*。大小必须作为参数传递。arrrgggghhh!正确缩进代码。对不起,我还没有学会正确的缩进方法。我们的指导老师说他会在本周的某个时候给我们发一份指南。代码要么太乱,无法识别j的初始化,要么没有j的初始化。在任何情况下都是不好的。在添加到sizeofnumarray之前,需要检查sizeofnumarray,以防结束缓冲区溢出。我假设你打算把{}放在numaray[j]=value的周围;j++;计数器++@MattSmith sizeofnumarray==此函数内的sizeofint*。大小必须作为参数传递。是的,我同意。上课的第一周是hello World,我们实际编写的第一个编程作业是假设取2x2到6x6之间的任意一个方阵,并给出答案。我不知道我将如何完成这件事或保持我的理智。我完成这项任务已经16个小时了,而且已经超出了我的能力范围。我在这里得到的回答有一半;我甚至不知道他们的意思。是的,我同意。上课的第一周是hello World,我们实际编写的第一个编程作业是假设取2x2到6x6之间的任意一个方阵,并给出答案。我不知道我将如何完成这件事或保持我的理智。我完成这项任务已经16个小时了,而且已经超出了我的能力范围。我在这里得到的回答有一半;我甚至不知道他们的意思。