使用while循环遍历在C中作为参数接收的char数组
我对C还是有点陌生,在过去的一段时间里,我遇到了一个难题,那就是迭代作为参数接收的字符数组。char数组是作为字符串文本创建的,并作为参数传递。据我所知,这个数组只是作为指向数组中第一个元素的指针接收的;我的目标是循环遍历每个元素,直到到达传递的字符串文本的末尾 因为我需要对循环中的每个char与char文本进行比较,所以我将数组中指向的值赋给了用于比较的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
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,这可能是明智的。