嗨喽,大家好,我是程序猿老王,程序猿老王就是我。
今天给大家讲一讲C语言基本输入、输出。
(资料图)
目录
一、输入函数
二、输出函数
三、输入输出函数的格式化字符串
四、以下是一些C语言输入和输出中常见的语法错误和例子
C语言的输入和输出通常使用标准库函数来实现,主要包括
一、输入函数:
scanf()函数:从标准输入设备(通常是键盘)读取格式化输入,并将输入存储在变量中。例如:
int a;
scanf("%d", &a); //会从标准输入设备读取一个整数,并将其存储在变量a中
getchar()函数:从标准输入设备读取一个字符。例如:
char c;
c = getchar(); //会从标准输入设备读取一个字符,并将其存储在变量c中
二、输出函数:
printf()函数:按照指定格式输出内容到标准输出设备(通常是屏幕)。例如:
printf("Hello, world!\n"); //会输出"Hello, world!"字符串,并在末尾添加一个换行符
putchar()函数:将一个字符输出到标准输出设备。例如:
putchar("A"); //会将字符"A"输出到标准输出设备
puts()函数:输出一个字符串到标准输出设备,并在末尾添加一个换行符。例如:
puts("Hello, world!"); //会输出"Hello, world!"字符串,并在末尾添加一个换行符
fprintf()函数:按照指定格式输出内容到指定的文件。例如:
fprintf(fp, "Hello, world!\n"); //会将"Hello, world!"字符串和一个换行符写入到文件fp中
三、输入输出函数的格式化字符串:
格式化字符串用于指定输入或输出的格式。格式化字符串中的转换说明符用于指定要读取或写入的数据类型。下面是一些常见的转换说明符:
例如:
int a;
float b;
char str[5];
scanf("%d%f%s", &a, &b, str); //会从标准输入设备读取一个整数、一个浮点数和一个字符串,分别存储在变量a、b和str中
注:
a. 控制场宽和精度
可以在格式化字符串中使用数字来控制输出的场宽和精度。例如:
%9.2f 表示输出场宽为9的浮点数,其中小数位为2,整数位为6,小数点占一位,不够9位右对齐
%8s 表示输出8个字符的字符串,不够8个字符右对齐
示例代码:
float a = 3.1415926;
char str[] = "hello";
printf("%9.2f\n", a); // 输出 "3.14"
printf("%8s\n", str); // 输出 " hello"
b. 控制左对齐和右对齐
可以在格式化字符串中使用"-"来控制输出的左对齐或右对齐。例如:
%-7d 表示输出7位整数左对齐
%6.9s表示输出一个长度不小于6且不大于9的字符串。如果字符串长度大于9,那么只会输出前9个字符,如果字符串长度小于6,那么输出宽度为6的空格
示例代码:
int b = 123;
printf("%-7d\n", b); // 输出 "123"
char str[] = "hello world!";
printf("%6.9s\n", str); // 输出 " hello wo"
c. 控制输出长整型数和双精度浮点型数
可以在格式化字符串中使用小写字母"l"来表示输出的是长整型数或双精度浮点型数。例如:
%ld 表示输出long整数
%lf 表示输出double浮点数
示例代码:
long c = 1234567890;
double d = 3.1415926;
printf("%ld\n", c); // 输出 "1234567890"
printf("%lf\n", d); // 输出 "3.141593"
四、以下是一些C语言输入和输出中常见的语法错误和例子:
a.忘记使用取地址符(&):当使用scanf()函数从标准输入设备读取数据时,必须在变量名前加上取地址符&,以便将输入的值存储在变量的内存地址中。例如:
int a;
scanf("%d", a); // 应该改为 scanf("%d", &a);
b.错误的格式化字符串:格式化字符串用于指定输入或输出的格式。如果格式化字符串与要读取或写入的数据类型不匹配,会导致输入或输出错误。例如:
int a;
float b;
scanf("%f", &a); // 应该改为 scanf("%f", &b);
printf("%d", b); // 应该改为 printf("%f", b);
c.缺少换行符:如果使用printf()函数输出多个字符串,应该在每个字符串的末尾添加一个换行符。否则,所有字符串将会在同一行输出。例如:
printf("Hello, ");// 应该改为 printf("Hello, \n");
printf("world!"); //printf("world!\n");
d.读取错误的数据类型:如果使用错误的转换说明符读取数据类型,会导致读取错误的值,甚至可能导致程序崩溃。例如:
char c;
scanf("%d", &c); // 错误的转换说明符,应该改为 scanf("%c", &c);
e.使用getchar()函数时,需要注意它会读取缓冲区中的一个字符,包括空格、制表符和换行符。如果之前有输入的字符留在缓冲区中,getchar()函数会直接读取它们而不等待用户输入。例如:
char c1, c2;
scanf("%c", &c1);
getchar(); // 读取输入缓冲区中的换行符
scanf("%c", &c2); // 如果不加getchar()会直接读取缓冲区中的换行符,而不是等待用户输入
f.在使用普通输出(如printf())时,需要注意控制字符串的格式化。例如,如果要输出一个带有百分号的字符串,需要使用两个百分号来转义。例如:
printf("The percentage is %d%%", 50); // 输出结果:The percentage is 50%
g.在使用普通输出(如printf())时,需要注意控制参数的类型和数量。如果参数类型与格式化字符串不匹配,会导致输出错误。例如:
int a = 10;
float b = 3.14;
char c = "A";
/*想要输出整数变量a、浮点数变量b和字符变量c的值。但是,我们在格式化字符串中使用了%f来表示a的值,%d来表示b的值,%c来表示c的值*/
printf("The value of a is %f, and the value of b is %d, and the value of c is %c.", a, b, c);
/*正确做法如下*/
printf("The value of a is %d, and the value of b is %f, and the value of c is %c.", a, b, c);
h.需要注意的是,getchar()和putchar()函数通常会在一个循环中使用,以读取或写入多个字符。例如:
int c;
while ((c = getchar()) != EOF) { // 读取输入,直到遇到文件结束符(EOF)
putchar(c); // 将读取的字符写入标准输出设备
}
以上就是今天关于C语言基本输入、输出的所有内容了,欢迎收看,我们下期再会。
---END---
关于更多嵌入式C语言、FreeRTOS、RT-Thread、Linux应用编程、linux驱动等相关知识,关注公众号【嵌入式Linux知识共享】,后续精彩内容及时收看了解。
X 关闭