scanf & printf

C 语言入门的第一堂课讲的就是输出 Hello, world! 字符串,使用 printf() 输出到黑框框(命令行)里。后面讲 IO 的时候又提到了 scanf() 从黑框框中获取输入的内容。

基本的用法如下:

int n;
scanf("%d", &n);
printf("你输入的数为:%d\n", n);

这是一个格式化的输入输出函数,字符串内的 %d 表示整型,常用的类型还有 %s 表示字符串,%f 表示浮点型。&n 表示传入变量 n 的地址,意思是接受到的值将会放在 n 变量的位置。

输入和输出多个参数:

int i,j,k;
scanf("%d%d%d",&i,&j,&k);
printf("你输入的三个数是:%d,%d,%d\n",i,j,k);

多个参数输入可以用空格来实现间隔输入,这一点是比较方便的。但如果输入的是一段话呢,中文还好,英文单词之间要有空格进行分离,这要怎么处理呢?

gets & puts

gets(s) 读取一行的内容放到变量 s 中(缓存区),直到终止符或 EOF;puts(s) 输出变量 s 和一个换行符到标准输出终端。

本文中涉及的输入输出都是标准输入输出,stdin、stdout,命令行黑框框那种,与文件内容输入输出无关。

基本用法如下:

   char str[100];

   printf( "请输入一个字符串:");
   gets( str );
 
   printf( "\n你输入的是: ");
   puts( str );

这里面定义了一个字符数组,通过字符数组可以接受并存储字符串。C 语言本身是没有字符串类型的,主要实现方式就是字符数组和字符指针。字符数组长度比字符串长度大 1,因为字符数组会额外存储一个末尾字符 '\0',表示字符串结尾。

char str[20] = {'H','e','l','l','o',',','J','a','s','o','n','!','\0'};
char str[20] = "Hello, Jason!";

一般会采用第二种赋值方法,比较方便。注意,第一种写法是直接数组初始化,最后的结尾符号 \0,可有可无,因为在输出字符串时会默认加上的。

尝试过遍历输出字符数组的内容,发现单个字符输出时,发现存储的值为整型,属于该字符的 ASCII 码对应十进制值。

getchar & putchar

输入和输出一个字符,感觉可能在选择操作的时候,如 yes(y) or no(n) 的时候起作用。

基本用法如下:

   printf( "请输入一个值:");
   c = getchar( );
 
   printf( "\n你输入的是: ");
   putchar( c );

getchar() 也是获取存储的是该字符的 ASCLL 码十进制值。