1、 编写C语言程序实现以下功能:把一个C程序文件xxx.c中的语句中(不包含宏和字符串等)的多余的空白和空行全部删除,然后存入另一个xxx_bak.c,要求使用open(),write(),read(),lseek(),close()函数
时间: 2023-06-20 22:08:06 浏览: 293
以下是代码实现:
```c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define BUF_SIZE 1024 // 缓冲区大小
int main() {
int fd_old, fd_new, n;
char buf[BUF_SIZE];
char last_char = '\0'; // 用来记录上一个字符
// 打开源文件
if ((fd_old = open("xxx.c", O_RDONLY)) == -1) {
printf("Open file xxx.c failed.\n");
return -1;
}
// 创建新文件
if ((fd_new = open("xxx_bak.c", O_WRONLY | O_CREAT | O_TRUNC, 0644)) == -1) {
printf("Create file xxx_bak.c failed.\n");
close(fd_old);
return -1;
}
// 读取源文件内容并写入新文件
while ((n = read(fd_old, buf, BUF_SIZE)) > 0) {
for (int i = 0; i < n; i++) {
if (buf[i] == ' ' || buf[i] == '\t') { // 多余的空白
continue;
} else if (buf[i] == '\n') { // 多余的空行
if (last_char != '\n') {
last_char = buf[i];
write(fd_new, &buf[i], 1);
}
} else {
last_char = buf[i];
write(fd_new, &buf[i], 1);
}
}
}
// 关闭文件
close(fd_old);
close(fd_new);
return 0;
}
```
以上代码实现了打开源文件、创建新文件、读取源文件内容、删除多余的空白和空行、写入新文件、关闭文件等功能。
阅读全文