使用指针在C语言中循环遍历数组

4

我虽然有Java和Android的经验,但是对于C语言还很陌生。 我的for循环出现了问题,它永远不会结束,而是一直继续下去。

char entered_string[50];
char *p_string = NULL;

gets( entered_string );

for( p_string = entered_string; p_string != '\0'; p_string++ ){
    //....
}

我知道使用gets是不安全的,不被推荐,并且已经被弃用,但根据我的规格要求,我必须使用它。我想要通过使用指针循环遍历每个元素。

3个回答

12

您的测试应为*p_string != '\0';

p_string 是一个指针,而您的循环正在检查指针是否为 != '\0'。您关心的是值是否为 != '\0',要从指针中获取值,必须使用 * 对其进行解引用。


我已经尝试解决这个问题有一段时间了。现在完美地运行,谢谢!从两年没有每天使用引用的Java编程转换过来后,需要一些时间来掌握指针。 - TutenStain

3
    char str[] = "54321"; 
    char *p;  
    p = str;   
    for (p; *p != '\0';++p)
    {
         printf("%s \n",p);
    }

Output:
54321
4321
321
21
1


1

条件应该是*p_string != '\0' - 你需要解引用指针。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接