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



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

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

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

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

我能做些什么来让它工作?

提前谢谢。

字符指针不包含单个字符。 它指向内存中的单个字符。 您需要在某处声明实际char

例如,

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

所以你的代码有什么问题,char *currChar;创建了一个未初始化的指针。 该指针不指向任何地方。 你可以这样做:

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

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

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

此代码有效:

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

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

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

或:

char *currChar = '_';
do {
    // read();
    printf("Current Char:%cn", currChar);
} while (*currChar != '~');

最新更新