Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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
使用while循环遍历在C中作为参数接收的char数组_C_Arrays_String_Loops_Pointers - Fatal编程技术网

使用while循环遍历在C中作为参数接收的char数组

使用while循环遍历在C中作为参数接收的char数组,c,arrays,string,loops,pointers,C,Arrays,String,Loops,Pointers,我对C还是有点陌生,在过去的一段时间里,我遇到了一个难题,那就是迭代作为参数接收的字符数组。char数组是作为字符串文本创建的,并作为参数传递。据我所知,这个数组只是作为指向数组中第一个元素的指针接收的;我的目标是循环遍历每个元素,直到到达传递的字符串文本的末尾 因为我需要对循环中的每个char与char文本进行比较,所以我将数组中指向的值赋给了用于比较的char变量 我遇到的问题是指定循环应该在什么点结束 int main (int argc, char* argv[]) { test

我对C还是有点陌生,在过去的一段时间里,我遇到了一个难题,那就是迭代作为参数接收的字符数组。char数组是作为字符串文本创建的,并作为参数传递。据我所知,这个数组只是作为指向数组中第一个元素的指针接收的;我的目标是循环遍历每个元素,直到到达传递的字符串文本的末尾

因为我需要对循环中的每个char与char文本进行比较,所以我将数组中指向的值赋给了用于比较的char变量

我遇到的问题是指定循环应该在什么点结束

int main (int argc, char* argv[])
{
    testString("the quick brown fox jumped over the lazy dog");

    return EXIT_SUCCESS;
}

void testString(char line[])
{
    int i = 0;
    int j = 0;
    char ch;
    ch = line[i];

    char charArray[128];

    while (ch != '\0')    // Not sure why this doesn't work
    {   

        if ((ch == '\'' || ch == '-'))
        {
            charArray[j] = ch;
            j++;
        }
        else if (isalpha(ch))
        {
            charArray[j] = ch;
            j++;
        }
        else
        {
             // do nothing
        }

        i++;
        ch = line[i];
    }
}

提前感谢您提供的任何建议。

循环的退出条件工作正常

唯一缺少的是,您需要在
while
循环之后以null终止
charArray
,并将其打印出来:

while (ch != '\0')
{
    ...
}
charArray[j] = '\0';
printf("charArray=%s\n",charArray);

并学习如何使用调试程序。当循环找到字符串的结束标记时,程序将终止。字符串的结尾由“\0”表示。它不起作用是什么意思?看起来循环结束得很好-您只是不需要对结果
charArray
执行任何操作。(请注意,如果/当您使用
charArray
执行某些操作时,您可能需要确保它正确地以空字符终止,而现在没有发生这种情况)。@pm100它已经在循环中,尽管缩进很严重。检查
j
是否不超过
charArray
的边界,即127,这可能是明智的。