c语言 输出char类型 乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 输出char类型 乱码相关的知识,希望对你有一定的参考价值。
int num;
char grade;
scanf("%d",&num);
switch(num)
case 9:
grade='A';
break;
default:
grade='b';
break;
printf("%c",&grade);
输入:9
输出:ん
你可以看一下C语言中的标准输入输出函数的参数要求!!! 参考技术A printf("%c",&grade);
不需要&号,你还是复习下C语言的标准输入输出函数标准!不然这样的错会经常犯。C的编译器很少有智能提示,不想C#,语法,单词上的拼写错误需要自己多注意点! 参考技术B printf输出的时候没有&吧 参考技术C 把你的printf语句中的取址符号(&)去掉再看看
C 语言-----字符串和输入输出函数
在C语言中,没有字符串类型,那它是怎么表示字符串呢? 由于字符串是一系列单个字符的组合,所以它用char 类型的数组来表示字符串,在数组中,一个数组元素存放一个char类型字符。
char name[40];
name 变量就可以存放字符串了,并且最多只能存储40个字符。那我们怎么给变量name赋值呢,最简单的办法,就是用字符串常量。字符串常量的写法和我们平时的写法还是一样的,用双引号括起来,如“Zing went the strings of my heart”; 字符串常量写好后,就可以像下面一样进行赋值
name=”Zing went the strings of my heart”;
赋值成功后,它在内存中的表示形式如下:
你可能已经注意到数组末尾位置有一个字符\\0, 它是空字符,表示字符串的结束。C语言中,字符串一定以空字符结束,这意味着声明数组的容量必须比它要存储的字符串的长度多1;在这里,str字符串的长度是40, 我们只能存储39个字符, 剩下一位留给空字符。
strlen() 函数则是获取到字符串的长度,strlen(str) 结果为33, 它包含在string.h 头文件中,所以使用这个方法之前,要先引进这个头文件 #include<string.h>
#include <stdio.h> #include <string.h> // 引进头文件string.h int main() { char str[40] = "Zing went the strings of my heart"; printf("%u", strlen(str)); // 调用strlen 获取字符串的长度 return 0; }
顺便说一下常量的定义:
1,使用预处理器定义常量。在程序的头部#define PI 3.1415 在编译时,程序中的所有常量PI,都会被替换成3.1415. 这一过程也称之为编译时替换。
2,const 也可以用来声明常量,const double PI = 3.1415;
#include <stdio.h> #define PI 3.1415 // 定义常量 int main() { const int r = 5; printf("%f %d", PI, r); return 0; }
Printf()函数: 打印字符串,它的格式如下:
Printf(格式化字符串,待打印的参数1,待打印的参数2,.....待打印的参数n), 看一下下面这段打印代码,
printf(“The %d person ate %f berry pies. \\n”, number, pies);
格式化字符串就是双引号括起来的内容,为什么叫格式化字符串,因为它里面有%d, %f, 这样的转换说明,就是后面要打印的项,以什么格式进行输出。%d表示以整数时行输出,%f 以浮点数进行输出。
还有其它几个常用的格式说明,
%e或 %E,以e记数法来表示浮点数
%s 字符串
%% 打印一个百分号
%c: 单个字符
这样我们在使用printf 的时候,就比较清楚了,我们要打印多少项,就要把它们在格式化字符串后面依次列出,同时在格式化字符串中匹配对应的格式说明,这里一定要注意,格式字符串中的转换说明的个数一定要和待打印项的个数一致,它们一一匹配。当然,如果只是打印字符串,就直接写要打印的字符串就好了,就不用转换说明了。Printf(“Hello World”)
转换说明修饰符: 就是在% 和d 之前可以加说明,表示对待打印项进一步的修饰。如%.2f 就是表示小数点后面保留两位小数。 %5d表示整数的宽度为5,但是如果指定的字宽小于原有数的字宽,字段宽度会自动增加。
#include <stdio.h> #define PI 3.1415 // 定义常量 int main() { const int r = 5; int num = 100; // PI小数点后面成了2位,r占了5个字宽,num 虽然设了两个字宽,但这还是占3个 printf("%.2f %5d %2d", PI, r, num); return 0; }
打印较长的字符,printf()可以接受多个字符串,编译的时候,会自动它拉连接到一起,如 printf(“this is a ” “best person”)
Scanf()读取输入的内容
当我们使用键盘进行输入的时候,输入的永远是字符,比如我们输入2018, 我们实际上是依次输入4个字符2,0,1,8, 所以我们要告诉scanf,他表示的是数字,所以还是用到了格式说明。scanf()的第一个参数,格式转换说明,后面则是读取的值要存入的变量。格式转换说明,和printf()函数一致
scanf(“%d %d”, &num1, &num2); //一定要注意变量前面的&符号,变量存储的是基本数据类型时,读取的时候,前面一定要加&
当用键盘输入多个数值时,中间用空格隔开,空格前面的就会赋给第一个参数,空格后面就会赋值给第二个参数。但这里要注意字符串的读取,scanf() 函数读取我们输入的字符串时,在遇到第1个空白(空格、制表符,换行符)时,就不会再读取输入。 scanf 去读取 angela palains 时,它只会读取 angela.
以上是关于c语言 输出char类型 乱码的主要内容,如果未能解决你的问题,请参考以下文章
我写了一个C语言程序。但输出结果为一串乱码。不知道是哪里错误了