我有一个包含单个字符的字符指针。我想创建一个while循环,只要该字符不是'〜'就会继续运行。但我似乎无法正确比较角色。
char *currChar;
while(currChar != '~') {
//read();
printf("Current Char:%c\n", currChar);
}
read将用户输入的最后一个值放入currChar。 printF将始终输出正确的信息(例如,如果用户按下了〜),但由于某种原因,他将永远不会退出循环。
如果我尝试做类似的事情(* currChar!='〜'),我会收到分段错误。
我该怎么做才能让它发挥作用?
提前致谢。
答案 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 != '~')