lllllxxxxxx 发表于 2021-8-13 00:53:02

关于putchar()函数

#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)不是直接输出字符吗,为什么是错误的呢??
谢谢大佬们的指导。。

jhq999 发表于 2021-8-13 06:02:36

本帖最后由 jhq999 于 2021-8-13 06:16 编辑

int main(int x)
{
        int ch={0},i=0;
      printf("请输入一个句子:");
      while((ch=getchar())!='\n')
      {
                if('A'<=ch&&ch<='Z')
                {
                        ch=ch+32;
                }
               else
               {
                         ch=ch-32;
               }
                                i++;
      }
                for (int j = 0; j < i;j++)
                {
                        putchar(ch);
                }
      
        getchar();
        return 0;                              
}
       
因为puchar()只能输出一个字符。你的只是输出最后的回车'\n'

B站在读研究生 发表于 2021-8-13 10:31:11

出了循环的 ch = '\n' (最后输入是回车)
所以循环外 putchar(ch) 输出ch字符‘\n’(\n啥也不输出)
放在循环里面就每次循环都输出一下ch

wdxunxun 发表于 2021-8-13 11:58:15



#include <stdio.h>

int main()
{
      char ch={0}; //定义字符数组
                int i=0;
      printf("请输入一个句子:");
      while((ch=getchar())!='\n') // 循环检验
      {
            if('A'<=ch&&ch<='Z') // 大小写转换
            {
                    ch=ch+32;
            }
            else
            {
                    ch=ch-32;
            }
              i++;
      }
      for (int j = 0; j < i;j++) //循环输出字符数组
      {
                putchar(ch); // 一次只能输出一个字符
      }   
      return 0;                              
}
页: [1]
查看完整版本: 关于putchar()函数