printf("***"); while (1) { char ch = getchar(); if (ch == 8) printf("\b "); } 这是一段c语言代码,为什么if语句没有识别到ch变量是退格键,并删除一个星*号
时间: 2024-01-12 17:04:29 浏览: 25
这段C语言代码的主要作用是在屏幕上输出一行星号并且实现类似于密码输入框的效果。每当用户输入一个字符时,会将输入的字符替换成空格。
但是,这段代码中的if语句无法识别退格键是因为它没有正确判断输入的字符是否是退格键。
在C语言中,退格键的ASCII码为8,因此if语句应该判断输入的字符是否等于8,而不是'8'字符。修改if语句的条件判断语句如下:
```
if (ch == 8)
```
这样就可以正确判断用户输入的字符是否是退格键了。
相关问题
#include "stdio.h" #include "string.h" char chupper(char ch); void main() { char ch; do { ch=getchar(); if(ch>='a'&&ch<='z') { ch=chupper(ch); } printf("%c",ch); } while(ch!='0'); } char chupper(char ch) { return ch>='a'?ch-32:ch; }
这段代码的功能是将输入的字符串中的小写字母转换成大写字母并输出,直到输入字符 '0' 为止。
具体实现过程如下:
1. 引入头文件 `stdio.h` 和 `string.h`;
2. 声明函数 `char chupper(char ch)`,用于将小写字母转换成大写字母;
3. 在主函数中,声明字符型变量 `ch`;
4. 使用 `do-while` 循环不断读入字符,并判断是否为小写字母,如果是,调用 `chupper` 函数将其转换成大写字母;否则直接输出;
5. 如果输入字符为 '0',退出循环;
6. 程序结束。
函数 `chupper` 的实现方法是,如果输入的字符是小写字母,就将其 ASCII 码值减去 32,即转换成对应的大写字母,否则直接返回原字符。
需要注意的是,函数 `chupper` 的返回值类型应该是 `char` 而非 `int`。
将代码修改为格式更规范的版本:
```c
#include <stdio.h>
#include <string.h>
char chupper(char ch);
int main() {
char ch;
do {
ch = getchar();
if (ch >= 'a' && ch <= 'z') {
ch = chupper(ch);
}
printf("%c", ch);
} while (ch != '0');
return 0;
}
char chupper(char ch) {
return ch >= 'a' ? ch - 32 : ch;
}
```
如果输入字符串 "hello, world!",输出结果为 "HELLO, WORLD!"。
#include<stdio.h> int main(void) { char ch; while((ch=getchar())!='#') { if(ch=='\n') continue; printf("Step 1\n"); if(ch=='c') continue; else if(ch=='b') break; else if(ch=='h') goto laststep; printf("Step 2\n"); laststep:printf("Step 3\n"); } printf("Done\n"); return 0; } 怎么理解这c语言代码
这段代码是一个使用了循环和条件语句的 C 程序。让我为您解释一下每个部分的作用:
1. 首先,通过 `#include <stdio.h>` 引入了标准输入输出库,以便使用 `printf` 和 `getchar` 函数。
2. 在 `main` 函数中定义了一个字符型变量 `ch`。
3. 这里使用了一个 while 循环,循环条件是 `(ch = getchar()) != '#'`,即循环将一直执行到输入的字符为 '#'。
4. 在每次循环开始之前,会执行 `if (ch == '\n') continue;` 条件语句。当输入的字符是换行符时,会跳过本次循环,继续下一次循环。
5. 接下来会执行 `printf("Step 1\n")`,即输出 "Step 1"。
6. 然后会进行一系列条件判断。如果输入的字符是 'c',会执行 `continue;` 跳过本次循环;如果输入的字符是 'b',会执行 `break;` 跳出整个循环;如果输入的字符是 'h',会执行 `goto laststep;` 跳转到标签 `laststep` 处继续执行。
7. 在执行完相应的条件判断后,会执行 `printf("Step 2\n")`,即输出 "Step 2"。
8. 然后程序会跳转到标签 `laststep` 处,执行 `printf("Step 3\n")`,即输出 "Step 3"。
9. 循环会继续进行,重复步骤 3 到步骤 8,直到输入的字符为 '#'。
10. 循环结束后,会执行 `printf("Done\n")`,即输出 "Done"。
11. 最后,程序返回 0,表示正常运行结束。
综上,根据输入的字符不同,这段代码的输出结果会有所变化。具体的输出结果取决于输入的字符序列。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)