#include<stdio.h>
void main() {
printf("hello world\n");
printf("%d\n", sizeof(""));//空时也占了一个字节
printf("%d\n", sizeof("1"));
getchar();
}
字符常量是单引号引起来的一个字符,而字符串常量是双引号引起来的若干字符。
#include<stdio.h>
void main() {
char c = '1';
int x = 1;
printf("%p,%p", &c, &x);//在内存中观察区别
getchar();
}
char做加法
#include<stdio.h>
void main() {
char c = 'A';
printf("%c",c);//打印字符
c = c 2;
printf("%c,%d", c,c);//打印字符与对应数字
getchar();
}
用char 存字符,这个在C编译器下不会出错,在C 下会出错,实际我们不能这么做。
#include<stdio.h>
void main() {
char c1 = 'A';
char c2 = "A";//这里会有问题
getchar();
}
7.ASCII码
ASCII 定义了 128 个字符。
- 0-31、127(删除键)是控制字符
- 空白字符:空格(32)、 制表符、 垂直制表符、 换行、 回车。
- 可显示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、 、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,还有顿号、。
这个代码在vs中编译不过去。
#include<stdio.h>
void main() {
char c;
printf("请输入一个字符:\n");
scanf("%c", &c);
printf("%c的ASCII为%d", c, c);
getchar();
}
Severity Code Description Project File Line Suppression State Error C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
我们可以scanf_s来替换,问题是scanf_s 不通用。由于 scanf_s 是VS编译器所提供的,所以在其他平台上并不通用,这就导致用 scanf_s 编写出来的代码不通用。
再就是在程序最上面加上
#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void main() {
char c;
printf("请输入一个字符:\n");
scanf("%c", &c);
printf("%c的ASCII为%d", c, c);//c%字符,%d数字
getchar();
}
来个大小写转换
#include<stdio.h>
//大写转小写
void main() {
char c;
c = getchar();//取得用户输入
printf("%c,%d\n", c,c);
c = c 32;
printf("%c,%d", c,c);
}
getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符。
注意:这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字
scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void main() {
int a, b, c;
printf("用空格分开输入:\n");
scanf("%d%d%d", &a, &b, &c);
printf("a=%d,b=%d,c=%d\n", a, b, c);
}