C语言入门阶段03:C语言输入输出

来源 : 程序猿老王w 时间:2023-04-06 16:03:02

嗨喽,大家好,我是程序猿老王,程序猿老王就是我。

今天给大家讲一讲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 关闭

  • 热门推荐

备案号:皖ICP备2022009963号-20

邮箱:39 60 291 42@qq.com

版权所有 青年休闲网所有