printf-菜鸟求解c语言中putchar和getchar的细节。

问题描述

菜鸟求解c语言中putchar和getchar的细节。
 # include <stdio.h>

int main()
{
    int trans(char);
    char c;
    printf("输入一串字符串进行翻译:
");
    c = getchar();
    while(c != '
')
    {
        c = trans(c);
        printf("%d", c);
        getchar();
    }
    putchar('
');
    return 0;
}

trans(char ch)
{
    if(ch >= 65 && ch <= 86 || ch >= 97 && ch <= 118) ch += 4;
    if(ch >= 87 && ch <= 90 || ch >= 119 && ch <= 122) ch -= 22;
    return ch;
}

这里我运行以后会出现这样的情况:

就是我只输入了4个字符,结果却输出了5个,这是怎么回事啊??
菜鸟正在学习,跪求大神解答!

解决方案

while()里的c = getchar();

解决方案二:

 # include <stdio.h>

int main()
{
    int trans(char);
    char c;
    printf("输入一串字符串进行翻译:
");
    c = getchar();
    while(c != '
')
    {
        c = trans(c);
        printf("%d", c);
        c=getchar();
    }
    putchar('
');
    return 0;
}

trans(char ch)
{
    if(ch >= 65 && ch <= 86 || ch >= 97 && ch <= 118) ch += 4;
    if(ch >= 87 && ch <= 90 || ch >= 119 && ch <= 122) ch -= 22;
    return ch;
}

应该这样改

解决方案三:

C 语言putchar和getchar()

时间: 2024-10-28 12:05:41

printf-菜鸟求解c语言中putchar和getchar的细节。的相关文章

C语言中getch()与getchar()

getch()(): 所在头文件:conio.h 函数用途:从控制台读取一个字符,但不显示在屏幕上 例如: char ch;或int ch; getch()();或ch=getch()(); 用getch();会等待你按下任意键,再继续执行下面的语句; 用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句. getchar()(): 该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件.如: #include int get

c语言中getch,getche,getchar的区别_C 语言

getchar 是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说 ,如果stdin有数据的话不用输入就可以直接读取了.而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符. getch() 实际是一个输入命令,作用是从键盘接收一个字符,而且并不把这个字符显示出来,就是说,你按了一个键后它并不在屏幕上显示你按的什么,而继续运行后面的代码,所以我们在C++中可以用它来实现"按任意键继续"的效果,即程序中遇到getch();这行语

C语言中char*和char[]用法区别分析_C 语言

本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正. 本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以: 当char *s = "hello";后,不能使用s[0]='a':语句进行赋值.这是将提示内存不能为"written". 当用char s[]=&q

表达式-c语言中的printf函数问题

问题描述 c语言中的printf函数问题 int main() { int arry[3][5]={ {1,2,4}, {4,5,6,7}, {6,5,3,8} }; int (*p)[5]; p=arry; printf("%xn",*(p+1)+3); printf("%xn",*(*(p+1)+3)); printf("%xn",*(p+1)+3); printf("%xn",*(p+1)+2); printf(&quo

C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别

以下是对C语言中printf(),sprintf(),scanf(),sscanf()的用法以及区别进行了详细的分析介绍,需要的朋友可以参考下   printf语法: #include <stdio.h> int printf( const char *format, ... ); printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.返回值是输出的字符数量.sprintf语法: #include <stdio.h> int spri

c语言-C语言中,关于printf的问题!

问题描述 C语言中,关于printf的问题! 程序如下,为什么打印p时候值是不确定的?我知道正确的写法是 * p,但是我想知道 直接打印p为什么不报错,也没警告,但是值却不确定? #include <stdio.h> int main() { int a =8; int *p = &a printf("%dn",p); } 解决方案 printf("%dn",p) 代表指针p所指向的变量的地址值,所以不报错,你输出的是整型变量a的地址值,要想输出

32位-c语言中 unsigned int i=3;printf(&amp;amp;quot;%u &amp;amp;quot;,i*-1);

问题描述 c语言中 unsigned int i=3;printf("%u ",i*-1); 在32位编译系统中,运行以下程序的结果是()#include main(){ unsigned int i=3; printf("%u ",i*-1); return 0;}A.3 B.-3 C.4294967293 D.运行出错===运行程序的结果选C答案,求大侠详细解释 解决方案 main() { int a[3][3],*p,i; p=&a[1][1]; fo

详解C语言中printf输出的相关函数_C 语言

C语言printf()函数:格式化输出函数printf()函数是最常用的格式化输出函数,其原型为: int printf( char * format, ... ); printf()会根据参数 format 字符串来转换并格式化数据,然后将结果输出到标准输出设备(显示器),直到出现字符串结束('\0')为止. 参数 format 字符串可包含下列三种字符类型: 一般文本,将会直接输出 ASCII 控制字符,如\t.\n 等有特定含义 格式转换字符 格式转换为一个百分比符号(%)及其后的格式字符

c语言中scanf()读取值的问题

问题描述 c语言中scanf()读取值的问题 int get_int(void) { int input; char ch; while (scanf("%d", &input) != 1) { while ((ch=getchar()) != ' ') putchar(ch); printf("is not an interger. Please enter an"); printf("interger value,such as 25,-178