为什么会出现这种情况
为什么会这样 #include<stdio.h>int main(void)
{
int a;
char b = "我们";
float c;
double d;
a = 98;
/* b = '我们'; */ // 此句有两个错误:1、b是字符型变量,只能存贮一个字符;
// 2、字符串要用双引号
c = 98.89;
d = 80.123322123;
printf("%s都考了%d分\n",b,a); // 字符串输入输出控制符是%s
printf("圆周率是%f精确为%f\n",c,d);
return 0;
}
本帖最后由 头发 于 2021-1-19 13:02 编辑
b只能是一个字符,你这样写可以定义char b[]=“我们”; 输出用%s 头发 发表于 2021-1-19 12:45
b只能是一个字符,你这样写要定义char b;
那可以是一个汉字吗 本帖最后由 头发 于 2021-1-19 12:51 编辑
啦啦啦95426 发表于 2021-1-19 12:47
那可以是一个汉字吗
不好意思 我搞错了 不可以 头发 发表于 2021-1-19 12:48
不好意思 我搞错了 不可以
char b那么b不能为汉字对吗?求助大神 本帖最后由 头发 于 2021-1-19 13:02 编辑
啦啦啦95426 发表于 2021-1-19 12:53
char b那么b不能为汉字对吗?求助大神
对,C语言中汉字是用字符串来存储的,因为汉字是多字节组成(GBK字符集一个汉字占两个字节,UTF8字符集,一个汉字占三个字节),所以标准C中,只能用字符串来存储汉字数据。
可以先定义一个足够大的char数组,用gets()和puts方法输入和输出汉字 啦啦啦95426 发表于 2021-1-19 12:53
char b那么b不能为汉字对吗?求助大神
汉字占两个字符我记得是,所以char存储不了 本帖最后由 jackz007 于 2021-1-19 13:43 编辑
#include <stdio.h>
#include <string.h>
int main(void)
{
int a ;
char b ; // 2 个汉字占用 4(Linux 为 6) 个字节,'\0' 占用 1 个字节,b[] 不可少于 5(Linux 为 7) 个字节
float c ;
double d ;
a = 98 ;
strcpy(b , "我们") ; // 字符串赋值一定要通过函数,不可以用等号,除非是在定义 b[] 的时候。
c = 98.99 ;
d = 80.123322123 ;
printf("%s都考了%d分\n" , b , a) ;
printf("圆周率是 %f 精确为 %lf\n", c , d) ;
}
页:
[1]