文件对于嵌入式来说不是必要的,我们的要求只有“了解”即可。
1.文件操作
文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音...
C程序中,文件中数据的输入/输出操作以“流”的方式进行,可以看做是一种数据的流动。
2.scanf和printf函数
C语言中的I/O (输入/输出)通常使用printf()和scanf()两个函数,scanf()函数从标准输入流stdin读取输入,printf()函数把输出写入到标准输出流stdout。这两个函数我们在前面的案例中已经大量使用。
案例演示:从键盘获取输入并将内容再输出
#include <stdio.h>
int main()
{
// 定义变量
char str[100];
int i;
// 获取输入
printf("Please Input A String And A Number :");
scanf("%s %d", str, &i);
// 输出到屏幕终端
printf("You entered: %s %d ", str, i);
printf("\n");
return 0;
}
3.getchar() & putchar() 函数
- getchar 函数
getchar() 函数用于从标准输入流(通常是键盘输入)读取一个字符。这个函数在同一个时间内只会读取一个单一的字符。
函数原型:
int getchar(void);
返回值说明:
返回一个整数值,表示读取的字符。
- putchar 函数
putchar()函数用于将一个字符写入到标准输出流(通常是屏幕)。这个函数在同一个时间内只会输出一个单一的字符。
函数原型:
int putchar(int character);
返回值说明:
返回一个整数值,是写入的字符的ASCII码值。
参数说明:
character是要写入的字符的ASCII码值。
#include <stdio.h>
int main( )
{
int c;
printf( "Enter a value :");
c = getchar();
printf( "\nYou entered: ");
putchar(c);
printf("\n");
return 0;
}
4.gets()和puts()函数
(1)gets()
gets() 函数用于从标准输入流(通常是键盘)读取一行文本,并将其存储在一个字符数组中(gets() 的参数),直到遇到换行符为止。
函数原型:
char *gets(char *str);
返回值说明:
返回一个指向存储在 str 中的字符串的指针
参数说明:
字符数组(字符串)的指针,用于存储读取的输入数据。
(2)puts()
puts() 函数用于将字符串输出到标准输出流(通常是屏幕),并自动添加换行符。它接受一个字符串作为参数,然后将其显示在屏幕上。
函数原型:
int puts(const char *str);
返回值说明:
返回成功写入的字符数,如果写入失败或出现错误,它会返回 特殊值EOF((EOF 是一个定义在 stdio.h 头文件中的常量,值通常为 -1))。
参数说明:
str 是要输出的字符串。
#include <stdio.h>
int main()
{
char str[20];
printf("Enter a line of text :");
gets(str);
printf("You entered: ");
// printf("%s", str);
puts(str);
return 0;
}
5.C文件读写
文件,无论是文本文件还是二进制文件,都以一系列字节的形式存在,C语言提供了一系列函数处理存储设备上的文件。
(1)打开文件
使用fopen( ) 函数来创建一个新的文件或者打开一个已有的文件。该函数位于标准库的 stdio.h 头文件中。
函数原型:
FILE *fopen( const char *filename, const char *mode );
返回值说明:
返回一个指向 FILE 结构的指针,该结构表示文件流,可以使用这个指针来进行文件的读取和写入操作。如果打开文件失败,返回一个空指针(NULL)。
- filename是一个以字符串形式指定的文件名,表示要打开的文件的名称,可以包括文件路径和文件名。
- mode 是一个以字符串形式指定的打开模式,表示打开文件的方式,可以是以下值之一:
模式 | 描述 |
r | 只读模式。 打开一个已有的文本文件,只允许读取文件。 |
w | 只写模式。 打开一个文本文件,从头写入文件。如果文件不存在,则会创建一个新文件并写入;如果文件存在,则清空文件并从头写入。 |
a | 追加模式。 打开一个文本文件,追加写入文件。如果文件不存在,则会创建一个新文件并写入;如果文件存在,在已有内容后面追加写入。 |
rb | 只读二进制模式。 打开一个已有的二进制文件,只允许读取文件。 |
wb | 只写二进制模式。 打开一个二进制文件,从头写入文件。如果文件不存在,则会创建一个新文件并写入;如果文件存在,则清空文件并从头写入。 |
ab | 追加二进制模式。 打开一个二进制文件,追加写入文件。如果文件不存在,则会创建一个新文件并写入;如果文件存在,在已有内容后面追加写入。 |
r+ | 读写模式。 打开一个文本文件,允许读写文件。 |
w+ | 读写模式。 打开一个文本文件,从头读写文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,则清空文件并从头读写。 |
a+ | 读写模式。 打开一个文本文件,读取或追加写入文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,读取或在已有内容后面追加写入。 |
rb+ | 读写二进制模式。 打开一个二进制文件,允许读写文件。 |
r+b | |
wb+ | 读写二进制模式。 打开一个二进制文件,从头读写文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,则清空文件并从头读写。 |
w+b | |
ab+ | 读写二进制模式。 打开一个二进制文件,读取或追加写入文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,读取或在已有内容后面追加写入。 |
r是只读,a是追加,记住这两个常用的即可。