使用指针实现字符传送,从zifu.txt文件中读取任意长度的字符,要求每3个字符中存放一个星号,输出并存入"jieguo.txt"文件 使用c语言中的指针函数编写
时间: 2024-03-25 09:40:14 浏览: 58
好的,下面是使用指针实现字符传送,从zifu.txt文件中读取任意长度的字符,每3个字符中存放一个星号,输出并存入"jieguo.txt"文件的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 1000 // 最大字符长度
void insert_star(char *str) {
int i = 0;
while (str[i] != '\0' && str[i+1] != '\0' && str[i+2] != '\0') {
str[i+3] = str[i+2]; // 后移一位
str[i+2] = '*'; // 插入星号
i += 4; // 每隔3个字符插入一个星号
}
}
int main() {
FILE *fin, *fout;
char str[MAX_LEN];
// 打开文件
fin = fopen("zifu.txt", "r");
if (fin == NULL) {
printf("Error: cannot open zifu.txt\n");
exit(-1);
}
fout = fopen("jieguo.txt", "w");
if (fout == NULL) {
printf("Error: cannot open jieguo.txt\n");
exit(-1);
}
// 读取文件
fgets(str, MAX_LEN, fin);
// 插入星号
insert_star(str);
// 输出到文件
fputs(str, fout);
// 关闭文件
fclose(fin);
fclose(fout);
return 0;
}
```
程序的大致思路如下:
1. 定义一个字符数组,用于存放从文件中读取的字符。
2. 打开输入和输出文件。
3. 读取输入文件到字符数组中。
4. 调用 `insert_star` 函数在字符数组中插入星号。
5. 将字符数组中的内容输出到输出文件中。
6. 关闭输入和输出文件。
`insert_star` 函数的实现如下:
```c
void insert_star(char *str) {
int i = 0;
while (str[i] != '\0' && str[i+1] != '\0' && str[i+2] != '\0') {
str[i+3] = str[i+2]; // 后移一位
str[i+2] = '*'; // 插入星号
i += 4; // 每隔3个字符插入一个星号
}
}
```
函数的作用是在字符数组 `str` 中每隔3个字符插入一个星号。具体实现方法如下:
1. 从数组的第0个位置开始遍历,如果数组中前三个元素都不是结束符 `\0`,就在第2个元素后面插入一个星号。
2. 插入星号后,将后面的字符都后移一位。
3. 继续从下一个需要插入星号的位置开始重复上述过程。
这样,就可以实现每隔3个字符插入一个星号的功能了。
阅读全文