1. C语言输入输出语句的概述
C语言是一种广泛应用于系统编程和嵌入式系统编程的编程语言,而输入输出是C程序中必不可少的重要部分。C语言的输入输出语句主要用于向用户请求输入数据以及在程序执行过程中输出计算结果等。C语言提供了多种输入输出语句,例如scanf、printf等等。
2. scanf语句
2.1 scanf语句的基本用法
scanf语句用于从标准输入设备(通常为键盘)接收数据,它的基本语法如下:
scanf("输入格式",&变量1,&变量2,...,&变量n);
其中, "输入格式" 可以是各种占位符,例如 "%d"用于接受一个整型变量, "%f" 用于接受一个浮点型变量,"%s" 用于接受一个字符串变量,等等。 &变量1,&变量2,...,&变量n 则是我们要接受输入数据的变量地址。
下面是一个 scanf 语句读取用户输入的例子:
#include <stdio.h>
int main()
{
int number;
printf("请输入一个整数:");
scanf("%d", &number);
printf("你输入的是:%d\n", number);
return 0;
}
在上面的程序中,用户被要求输入一个整数,然后scanf语句读取用户输入的整数并存储在number变量中,最后输出变量number的值。printf语句中的"\n"表示换行。
2.2 scanf语句的高级用法
除了基本的用法,scanf语句还有一些高级用法。例如可以在输入格式中使用方括号 [] 来指定一组可接受的字符,还可以在输入格式中使用星号 * 来跳过一些不需要读取的数据,等等:
#include <stdio.h>
int main()
{
int number;
char letter;
printf("请输入一个整数和一个字母:");
scanf("%d %*c %c", &number, &letter);
printf("你输入的整数是:%d,你输入的字母是:%c\n", number, letter);
return 0;
}
在上面的程序中,scanf语句采用了 "%d %*c %c" 的输入格式,这表示先读取一个整数,然后跳过一个字符(我们用星号 * 来代替忽略),最后读取一个字符。这样做的原因是,如果不加 "%*c" ,那么在输入后按回车键时,回车键也会被当做一个字符读入,从而直接读取下一个字符会出现问题。
3. printf语句
3.1 printf语句的基本用法
printf语句用于向标准输出设备(通常为屏幕)输出文本或变量的值,它的使用方法与scanf语句类似。下面是一个例子:
#include <stdio.h>
int main()
{
int number1 = 10, number2 = 20;
printf("数值1:%d,数值2:%d\n", number1, number2);
return 0;
}
在上面的程序中,printf语句将两个变量number1和number2的值输出到屏幕上,注意每个变量的值都应该用对应的占位符( "%d" )表示。
3.2 printf语句的高级用法
printf语句还有一些高级用法,例如在输出格式中指定小数点后的位数,以及通过指定输出字符串长度来控制输出的格式等等:
#include <stdio.h>
int main()
{
float value = 3.1415926;
printf("value = %.4f\n", value); //指定小数点后4位
printf("value = %10.4f\n", value); //指定输出字符串宽度为10
return 0;
}
在上面的程序中,第一行的print语句使用 "%.4f" 指定了输出小数点后4位,第二行的print语句使用 "%10.4f" 指定了输出字符串的宽度为10,如果实际输出结果没有达到10个字符,则输出结果以右对齐方式输出。
4. gets与puts语句
4.1 gets与puts语句基本用法
gets与puts函数也是C语言中常用的输入输出函数,gets函数用于从标准输入中读取一行(包括空格和制表符)字符串,puts函数用于向屏幕输出一行字符串。下面是一个例子:
#include <stdio.h>
int main()
{
char string[50];
printf("请输入一行字符串:");
gets(string);
puts(string);
return 0;
}
在上面的程序中,gets函数从标准输入中读取用户输入的字符串,并存储在字符串变量string中。puts函数则用于输出string变量中的字符串。
4.2 gets与puts语句的注意事项
需要注意的是,gets函数可能会导致缓冲区溢出的隐患。因为gets函数没有指定读取数据的范围,所以如果输入的数据过长,就可能会超出string数组的长度,从而覆盖到其它内存区域,导致程序崩溃。因此,在使用gets函数时,应该指定缓存区的大小:
#include <stdio.h>
int main()
{
char string[50];
printf("请输入一行字符串:");
fgets(string, 50, stdin); //指定了读入的最大字符数为50
puts(string);
return 0;
}
在上面的程序中,我们用fgets函数代替了gets函数,并指定了读入的最大字符数为50,从而保证输入数据不会超出string数组的长度。
5. 其它输入输出函数
C语言中还有一些其它的输入输出函数,例如fscanf、fprintf、getchar、putchar等等。这些函数的用法与前面所介绍的函数类似,这里不再一一赘述。读者可以在实际的程序开发中灵活应用这些函数。
6. 总结
本文主要介绍了C语言中常用的输入输出函数,包括了scanf、printf、gets、puts等函数以及一些高级用法,同时提醒了大家在使用gets函数时需要注意缓冲区溢出的问题。希望本文介绍的内容能够帮助读者更好地理解C语言中输入输出的基本原理,并能在实际应用中熟练掌握这些函数的使用方法。