文章目录
- 玩转c代码---从输入输出开始
- 参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章
- 需要掌握的内容
- 需要了解的内容
- 常见的人机交互接口
- 串口的输入输出
- PC常用的几个输入输出函数
- 示例代码
- 3 printf函数使用难点分析
- A.格式控制字符串的基本形式:
- 示例代码
- B.—些特殊字符的输入
- 常用键盘输入函数及重难点
- 1 字符输入函数getchar函数原型:
- 2 格式化输入函数scanf
- 3 scanf难点分析
- 传入的参数(回车,空格或者tab当作分隔)
- scanf格式字符格式字符
- 示例
- 遇到非空白字符的处理
- 通过文件的人机交互函数
- Tips: initialization makes integer from pointer without a cast
玩转c代码—从输入输出开始
参考:麦子学院-C语言程序设计及快速入门
参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章
需要掌握的内容
printf函数的使用putchar函数的使用scanf函数的使用getchar函数的使用
库函数的概念及使用方法
需要了解的内容
·人机交互的概念:计算机和人进行通信的方式
常见的人机交互接口
屏幕输出和视频输入
键盘输入
音频的输入输出
嵌入式系统的人机交互
串口的输入输出
.LED灯及LED阵列的输出
蜂呜器的输出
触摸屏
更加复杂的输入输出通路(无线网络,手机)
PC常用的几个输入输出函数
常用屏幕输出函数及重难点
什么是库函数,如何使用库函数
可参考:C函数速查
1 字符输出函数putchar
2 格式化的输出函数printf
函数原型:
extern void printf(const char *format,…),
调用格式:
printf(“格式控制字符串”,输出表列)
示例代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int int_num = 30;
float flo_num = 25.5f;
int num1 = 0;
int num2 = 0;
printf("Hello world! int num dec=%d %o %x\n",int_num, int_num, int_num);
}
输出:Hello world! int num dec=30 36 1e
3 printf函数使用难点分析
A.格式控制字符串的基本形式:
[标志][输出最小宽度][.精度][长度]类型
常见类型字符
4 printf常见格式字符格式字符
d 以十进制形式输出带符号整数(正数不输出符号),如果浮点数用%d,类型错误,只能输出0
o 以八进制形式输出无符号整数(不输出前缀0) 。
x,X 以十六进制形式输出无符号整数(不输出前缀0x)
u 以十进制形式输出无符号整数。
f 以小数形式输出单、双精度实数-
e,E 以指数形式输出单、双精度实数。
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符,
s 输出字符串。
printf常见标志
- 结果左对齐,右边填空格。
- 输出符号(正号或负号)
空格 输出值为正时冠以空格,为负时冠以负号
#对c、s、 d、u类无影响;
对○类,在输出时加前缀o;
对x类,在输出时加前缀Ox;
对e、g、f类当结果有小数时才给出小数点。
示例代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int int_num = 30;
float flo_num = 25.5f;
int num1 = 0;
int num2 = 0;
//printf("Hello world! int num dec=%d %o %x\n",int_num, int_num, int_num);
printf("****************************************************************\n");
printf("%26d|%-8d|%8.6d|%8.8f\n",int_num, int_num, int_num, flo_num);
printf("%#8o|%#8X|%8d|%-8d|%8.6d|%8.8f\n", int_num, int_num, int_num, int_num, int_num, flo_num);
}
输出:
30|30 | 000030|25.50000000
036| 0X1E| 30|30 | 000030|25.50000000
B.—些特殊字符的输入
转义字符 | 含义 |
---|---|
\ | 反斜线 |
’ | 单引号 |
" | 双引号 |
\r | 回车符 |
\t | 制表符(tab) |
\b | 退格符 |
\f | 换页符 |
\0 | 空字符 |
\xhh | 以十六进制数表示的字符 |
\ooo | 以八进制数表示的字符 |
常用键盘输入函数及重难点
1 字符输入函数getchar函数原型:
int getchar(void);
2 格式化输入函数scanf
函数原型: int scanf(char *format[,argument…]);
调用格式:scanf(“<格式化字符串>”,<地址表>);
3 scanf难点分析
传入的参数(回车,空格或者tab当作分隔)
格式化字符串
scanf格式字符格式字符
说明
%a 读入一个浮点值(仅c99有效)
%A 同上
%c 读入一个字符
%d 读入十进制整数
%i 读入十进制,八进制,十六进制整数
%o 读入八进制整数
%x 读入十六进制整数
%X 同上
%c 读入一个字符
%s 读入一个字符串
%f 读入一个浮点数
%F 同上
%e 同上
%E 同上
%g 同上
%G 同上
%p 读入一个指针
%u 读入一个无符号十进制整数
%n 至此已读入值的等价字符数
%[] 扫描字符集合
%% 读%符号
示例
#include <stdio.h>
#include <stdlib.h>
int main()
{
int int_num = 30;
float flo_num = 25.5f;
int num1 = 0;
int num2 = 0;
char get_char = "";
//printf("Hello world! int num dec=%d %o %x\n",int_num, int_num, int_num);
// printf("****************************************************************\n");
// printf("%26d|%-8d|%8.6d|%8.8f\n",int_num, int_num, int_num, flo_num);
// printf("%#8o|%#8X|%8d|%-8d|%8.6d|%8.8f\n", int_num, int_num, int_num, int_num, int_num, flo_num);
// get_char = getchar();
// printf("%c \n",get_char);
scanf("%d %d", &num1, &num2);
printf("%d %d\n", num1, num2);
return 0;
}
输出:
E:\temp>cd "e:\temp\" && gcc 1.c -o 1 && "e:\temp\"1
1.c: In function 'main':
1.c:10:21: warning: initialization makes integer from pointer without a cast [enabled by default]
123 32
123 32
遇到非空白字符的处理
读取的时候如果有非空白字符,则输入的时候也需要加上。或者,中间不加入分隔符。
通过文件的人机交互函数
文件操作函数列表
fopen,fclose,getc,putc,feof,fgets,fputs,fprintf,fscanf
Tips: initialization makes integer from pointer without a cast
参考原文链接:https://blog.csdn.net/qq_52749711/article/details/128735193
编译器警告: warning: initialization makes integer from pointer without a cast [enabled by default]
表示在初始化一个指针时将一个整型值直接赋值给指针,而不是使用强制类型转换。
在C语言中,指针和整型是不同类型,不能直接相互赋值。
可以尝试以下方法来解决:
使用强制类型转换,将整型转换为指针类型。
将整型赋值给一个临时变量,再将临时变量赋值给指针。
检查代码中是否有错误,如果是误操作导致的,修改对应的问题
请注意,尽管编译器可能不会报错,但是这样的代码是不安全的。
最好的方法是将整型转换为指针类型,或者检查代码是否有错误。