我有一个包含单个字符的字符指针。我想创建一个 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 != '~');