如何比较C中的字符指针和汽车

时间:2014-11-18 00:14:26

标签: c pointers char

我有一个包含单个字符的字符指针。我想创建一个while循环,只要该字符不是'〜'就会继续运行。但我似乎无法正确比较角色。

char *currChar;
while(currChar != '~') {
    //read();
    printf("Current Char:%c\n", currChar);
}

read将用户输入的最后一个值放入currChar。 printF将始终输出正确的信息(例如,如果用户按下了〜),但由于某种原因,他将永远不会退出循环。

如果我尝试做类似的事情(* currChar!='〜'),我会收到分段错误。

我该怎么做才能让它发挥作用?

提前致谢。

3 个答案:

答案 0 :(得分:1)

你的字符指针持有一个字符。它指向内存中的单个字符。你需要在某处声明一个实际的char

如,

char currChar = ' ';  /* Initialize to something not '~' */
while( currChar != '~' ) {
    /* read().  If your read function requires a pointer, then provide &currChar. */
    printf("Current character: %c\n", currChar);
}

因此,代码的错误在于char *currChar;创建了一个未初始化的指针。那个指针没有指向任何地方。你可以这样做:

char currChar = ' ';
char *currChar_ptr = &currChar;

现在你有了一个角色。你的指针指向那个角色。

答案 1 :(得分:0)

您需要比较* currChar。但是你得到段错误的原因是因为你第一次将* currChar与'〜'进行比较时,你将未定义的指针与'〜'进行比较。

所以调用read();在你进入循环之前,确保你首先分配空间来存储你的char。

或者:

char *currChar = '_';

do {
    // read();
    printf("Current Char:%c\n", currChar);
} while (*currChar != '~');

答案 2 :(得分:0)

在进入循环之前,您必须阅读用户输入。

此代码有效:

char *currChar;
do{
    read();
    printf("Current Char:%c\n", *currChar);
    currChar++;
}while(*currChar != '~')