鱼C论坛

 找回密码
 立即注册
查看: 705|回复: 3

[已解决]关于putchar()函数

[复制链接]
发表于 2021-8-13 00:53:02 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        int ch;
        printf("请输入一个句子:");
        while((ch=getchar())!='\n')
        {
                if('A'<=ch&&ch<='Z')
                {
                        ch=ch+32;
                }
                 else
                 {
                         ch=ch-32;
                 }
        }
        putchar(ch);
        return 0;
        }
运行以后什么都不显示,如果将putchar(ch)放入while内且外面添加一个putchar('\n')就可以正常运行了,putchar(ch)不是直接输出字符吗,为什么是错误的呢??
谢谢大佬们的指导。。

最佳答案
2021-8-13 10:31:11
出了循环的 ch = '\n' (最后输入是回车)
所以循环外 putchar(ch) 输出ch字符‘\n’(\n啥也不输出)
放在循环里面就每次循环都输出一下ch
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-13 06:02:36 | 显示全部楼层
本帖最后由 jhq999 于 2021-8-13 06:16 编辑
int main(int x)
{
        int ch[256]={0},i=0;
        printf("请输入一个句子:");
        while((ch[i]=getchar())!='\n')
        {
                if('A'<=ch[i]&&ch[i]<='Z')
                {
                        ch[i]=ch[i]+32;
                }
                 else
                 {
                         ch[i]=ch[i]-32;
                 }
                                i++;
        }
                for (int j = 0; j < i;  j++)
                {
                        putchar(ch[j]);
                }
        
        getchar();
        return 0;                               
}
        
因为puchar()只能输出一个字符。你的只是输出最后的回车'\n'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-13 10:31:11 | 显示全部楼层    本楼为最佳答案   
出了循环的 ch = '\n' (最后输入是回车)
所以循环外 putchar(ch) 输出ch字符‘\n’(\n啥也不输出)
放在循环里面就每次循环都输出一下ch
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-13 11:58:15 | 显示全部楼层
#include <stdio.h> 

int main()
{
        char ch[256]={0}; //定义字符数组 
                int i=0;
        printf("请输入一个句子:");
        while((ch[i]=getchar())!='\n') // 循环检验 
        {
            if('A'<=ch[i]&&ch[i]<='Z') // 大小写转换 
            {
                    ch[i]=ch[i]+32;
            }
            else
            {
                    ch[i]=ch[i]-32;
            }
                i++;
        }
        for (int j = 0; j < i;  j++) //循环输出字符数组 
        {
                putchar(ch[j]); // 一次只能输出一个字符 
        }     
        return 0;                               
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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