Linux系统编程基础——Linux应用程序设计
一、文件操作编程
在linux操作系统下,实现文件操作有两个方法,一种是通过C语言库函数调用来实现,独立于操作系统,在任何操作系统中使用方法都相同;另一种是通过linux系统调用来实现,只能在linux操作系统中使用。
1.C语言库函数
(1)打开(fopen)和关闭(fclose)文件函数
FILE *fopen(const char * filename.const char *mode);
//参数filename表示打开的文件名(包括路径)
//mode为文件打开模式
int fclose(FILE *stream);
int main() {
FILE *fp;
fp = fopen("data.txt", "w");
fclose(fp);
return 0;
}
常见文件打开模式如下表:
| 模式 | 含义 |
| r,rb | 只读打开,文件必须存在 |
| r+,rb+ | 读写打开,文件不存在则自动创建 |
| w,wb | 只写打开,文件不存在则自动创建 |
| w+,wb+ | 读写打开,文件不存在则自动创建 |
| a,ab | 追加打开,文件不存在则自动创建 |
| a+,ab+ |
读和追加打开,文件不存在则自动创建 |
(2)读取文件数据函数
读取文件数据可以用过fread,fgetc和fgets等函数实现,下面为一个例子:
fread 的格式:size_t fread(void * ptr, size_t size, size_t n, FILE * stream);
fgets 的格式:char * fgets(char * s, int size, FILE * stream);
fgetc 的格式:int fgetc(FILE * stream);
int main() {
//使用fread读取文件
FILE *fp = fopen("data.txt", "r");
char buffer_fread[100];
size_t bytes_read = fread(buffer_fread, 1, 100, fp);
buffer_fread[bytes_read] = '\0'; //加上字符串结束符
printf("读取到的内容:\n%s\n", buffer_fread);
fclose(fp);
//fgets按行读取
fp = fopen("data.txt", "r");
char buffer_fgets[50];
while (fgets(buffer_fgets, sizeof(buffer_fgets), fp) != NULL)
{
printf("读取到一行:%s", buffer_fgets);
}
fclose(fp);
//使用fgetc逐个字符读取
fp = fopen("data.txt", "r");
int ch;
while ((ch = fgetc(fp)) != EOF)
{
printf("%c", ch);
}
printf("\n");
fclose(fp);
return 0;
}
(3)向文件写数据函数
向文件写数据可以通过fwrite,fputc和fputs等函数实现,下面为一个例子:
fwrite格式:size_t fwrite(const void * ptr, size_t size, size_t n, FILE * stream);
fputc格式:int fputs(const char * s, FILE * stream);
fputs格式:int fputc(int c, FILE * stream);
int main() {
FILE *fp;
fp = fopen("output.txt", "w");
//使用fputs写入字符串
fputs("第一行:Hello, World!\n", fp);
fputs("第二行:这是 fputs 写入的内容。\n", fp);
//使用fputc写入单个字符
fputc('\n', fp); // 写入一个换行符
fputc('A', fp); // 写入字符 'A'
fputc('B', fp); // 写入字符 'B'
fputc('C', fp); // 写入字符 'C'
fputc('\n', fp); // 再写一个换行符
//使用fwrite写入数据块
char *message = "这是一条通过fwrite写入的完整字符串。\n";
fwrite(message, 1, strlen(message), fp); //写入 1 个大小为 strlen(message) 的块
fclose(fp);
return 0;
}
2.利用Linux系统调用函数完成文件操作
C语言库中的fopen,fclose等函数其实都是由操作系统的API函数封装面来的,同样在Linux操作系统中也可以直接利用API函数完成文件操作变成,常用的有打开open,关闭close,写write,读read。
二、时间编程
在编程中经常要使用到时间,需要用到的时间函数都包含在time.h头文件中。
(1)time函数
time_t time(time_t * tloc);
功能:获取日历时间(比如获取从2000年1月1日到现在所经历的秒数),结果保存在tloc中,如果操作成功则返回值为经历的秒数,失败则返回值为((time_t)-1)。
(2)gmtime函数
struct tm * gmtime(const time_t * timep);
功能:将日历时间转化为格林威治标准时间,并将数据保存在tm结构中。
(3)gettimeofday函数
int gettimeofday(struct timeval * tv,struct timezone * tz);
功能:获取从今日凌晨到现在的时间差,并放到tv结构中,然后将当地时区的信息存到tz结构中。
(4)sleep函数和usleep函数
unsigned int sleep(unsigned int sec);
void usleep(unsigned long usec);
功能:sleep函数使程序睡眠sec秒,usleep函数使程序睡眠usec微秒。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)