鱼C论坛

 找回密码
 立即注册
查看: 2633|回复: 24

[已解决]while循环中putchar为什么能够达到输出字符串的目的

[复制链接]
发表于 2020-2-29 20:39:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冷回清风暖 于 2020-2-29 20:43 编辑
  1. getchar()
复制代码
它是一个输入流的函数,从标准输入里读取下一个字符,也就是把输入的字符以队列的形式放入缓冲区,直到用户按回车为止。
  1. putchar
复制代码
作用是向终端输出一个字符,参数必须是一个字符,可以是介于0~127之间的一个十进制整型数。
不过我对下面这个程序不明白。
这个程序我想的是:
        每输入一个字符,会进入while循环
        getchar会将输入的字符所读应的ASCLL码放入缓冲区,并利用变量ch存储.
        紧接着进行字符大小写的替换
        接下来会运行到putchar函数,到这里应该输出当前字符
所以我预想的输出形式应该是:
        每输入一个字符,就会输出对这个字符进行大小写替换的结果,依次循环,最后回车结束程序。
但是运行后的结果是以字符串的形式显示的
        输入的字符显示在”请输入一行英文句子:“后面 ,按回车之后才输出的结果
和我想得输入一个字符,就输出这个字符转换后的结果,不一样
查了好久,不知道为什么
  1. #include <stdio.h>
  2. #define num 32;

  3. int main()
  4. {
  5.         int i , ch;
  6.         printf("请输入一行英文句子:");
  7.         while((ch = getchar())!='\n')//输入字符且并未按回车时进入循环
  8.         {
  9.             if (ch >= 'A' && ch <= 'Z')
  10.                 {
  11.                         ch = ch + num;
  12.                 }
  13.             else if('a' <= ch <= 'z')
  14.             {
  15.                 ch = ch - 32;
  16.             }
  17.             putchar(ch);//输出单个字符
  18.         }

  19.         return 0;
  20. }
复制代码
最佳答案
2020-2-29 21:59:23
        楼主试试这个代码
  1. #include <stdio.h>
  2. #include <conio.h>

  3. main(void)
  4. {
  5.         char c                                         ;
  6.         while((c = getch()) != '\r') {
  7.                 if (c < 32) c = 46                     ;
  8.                 else if (c >= 'A' && c <= 'Z') c += 32 ;
  9.                 else if (c >= 'a' && c <= 'z') c -= 32 ;
  10.                 putch(c)                               ;
  11.         }
  12.         printf("\n")                                   ;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-29 20:45:35 | 显示全部楼层
qiuyouzhi 发表于 2020-2-29 20:44
字符串就是由一个一个字符组成的,用字符输出字符串是很正常的事情啊

我想的是这个程序里面
他应该是,输入一个字符 输出一个结果
而不是输入全部字符之后 在输出结果
putchar 不是用来输出单个字符的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 20:50:49 | 显示全部楼层
qiuyouzhi 发表于 2020-2-29 20:48
循环上不是有注释吗
当输入的字符不为换行符时才进入循环

每输入一个字符 就进入循环
就会执行一次putchar函数
那么输入Y
输出结果不应该是 Yy吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 20:56:23 | 显示全部楼层

我用的win10 没有curse这个库
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-1 10:30:56 | 显示全部楼层

code::blocks
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 10:10:29 | 显示全部楼层

???。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 12:57:45 | 显示全部楼层
Cool_Breeze 发表于 2020-3-3 12:57
借你这个题目,做做!一起加油!

哇 赞 我还没学到后面的动态内存分配
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 13:19:43 | 显示全部楼层

最近一直在钻研指针 哈哈哈  C语言的精髓在指针
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 14:10:01 | 显示全部楼层
Cool_Breeze 发表于 2020-3-3 13:47
指针这个东西真的是太骚了!

哈哈哈 开启了楼层聊天模式 一起加油 指针学好了 C语言就好学多了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 17:24:21 | 显示全部楼层
谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-9 17:24:58 | 显示全部楼层
2164930278 发表于 2020-3-9 15:20
看了半天回车是回车,换行是换行。
是两个不相同的....
可以在ASCII码中查看一下的!

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-27 08:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表