C-break语句后递增不起作用

C-break语句后递增不起作用,c,for-loop,increment,break,short,C,For Loop,Increment,Break,Short,为什么这不起作用 short pStringCt = 0; const char* constInBuf = ibuf; int j; for (j = 0; j < i; j++) { /*Detect when there's a space in the buffer and grab word*/ if (ibuf[j] == ' ' || ibuf[j] == '|' || j == i - 1) {

为什么这不起作用

short pStringCt = 0;
const char* constInBuf = ibuf;
int j;
for (j = 0; j < i; j++)
{
    /*Detect when there's a space in the buffer and grab word*/
    if (ibuf[j] == ' ' ||
        ibuf[j] == '|' ||
        j == i - 1)
        {
            int k;
            for (k = j - 1; k >= 0; k--){

                if (k == 0 || ibuf[k] == ' ' || ibuf[k] == '|')
                {
                    if (pStringCt > 0){
                        pString[pStringCt] = strndup(constInBuf + k + 1, j - k + 1);
                        printf("-pString at %d is: %s\n", pStringCt, pString[pStringCt]);
                        pStringCt += 1;
                    }
                    if (pStringCt == 0){
                        pString[pStringCt] = strndup(constInBuf+k, j-k + 1);
                        printf("-----pString at %d is: %s\n", pStringCt, pString[pStringCt]);
                        pStringCt+=1;
                    }
                    printf("%d is pStringCt\n", pStringCt);
                    break;
                }
            }
        }
short pStringCt=0;
常量字符*constnbuf=ibuf;
int j;
对于(j=0;j=0;k--){
如果(k==0 | | ibuf[k]=''| | ibuf[k]=''
{
如果(pStringCt>0){
pString[pStringCt]=strndup(continbuf+k+1,j-k+1);
printf(“-pString在%d处为:%s\n”,pStringCt,pString[pStringCt]);
pStringCt+=1;
}
如果(pStringCt==0){
pString[pStringCt]=strndup(continbuf+k,j-k+1);
printf(“----pString在%d处为:%s\n”,pStringCt,pString[pStringCt]);
pStringCt+=1;
}
printf(“%d是pStringCt\n”,pStringCt);
打破
}
}
}

pStringCt的值在break语句之后不会增加。换句话说,pStringCt在方法的开头是0。然后,在与它相关的两个if语句之后,它会增加到1。但是在break语句之后,它会重置为0…

所以我使用scanf来获取字符串,它在方法o中迭代f获取字符串两次,这会弄乱方法的返回值。很抱歉没有粘贴所有代码,但我只是回答了我自己的问题…很抱歉


使用getline()的附加说明现在。很有魅力。

你想过调试你的程序吗?我想过,我也想过。printf语句总是在增量之前给我0,增量之后给我1。但是它们从不从1开始,然后给我2,等等。请粘贴整个代码并给我们当前代码的输出。我看到那里有很多打印,你可以简单地通过在break语句之后的第一条语句之前打印值来调试代码。