使用指针实现字符传送,从zifu.txt文件中读取任意长度的字符,要求每3个字符中存放一个星号,输出并存入"jieguo.txt"文件。c语言如何写
时间: 2024-03-23 11:37:49 浏览: 44
可以使用如下的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp1, *fp2;
char *buffer;
long fileLen;
// 打开文件
fp1 = fopen("zifu.txt", "rb");
if (!fp1) {
printf("无法打开文件 zifu.txt\n");
return 1;
}
// 获取文件长度
fseek(fp1, 0, SEEK_END);
fileLen = ftell(fp1);
fseek(fp1, 0, SEEK_SET);
// 分配内存空间
buffer = (char *) malloc(fileLen + 1);
if (!buffer) {
printf("内存分配失败\n");
fclose(fp1);
return 1;
}
// 读取文件内容到内存中
fread(buffer, fileLen, 1, fp1);
fclose(fp1);
// 处理文件内容
int i, j, len = fileLen / 3;
char *result = (char *) malloc(len + 1);
for (i = 0, j = 0; i < fileLen; i += 3, j++) {
result[j] = buffer[i];
result[j + 1] = buffer[i + 1];
result[j + 2] = buffer[i + 2];
if (i + 3 < fileLen) {
result[j + 3] = '*';
j++;
}
}
result[len] = '\0';
// 输出到控制台和文件
printf("%s\n", result);
fp2 = fopen("jieguo.txt", "w");
if (!fp2) {
printf("无法打开文件 jieguo.txt\n");
free(buffer);
free(result);
return 1;
}
fprintf(fp2, "%s", result);
fclose(fp2);
// 释放内存空间
free(buffer);
free(result);
return 0;
}
```
这段代码使用了指针来读取文件内容,并按照题目要求进行处理后输出到控制台和文件中。请注意,这段代码可能会因为文件打开失败、内存分配失败等原因导致程序异常退出,需要进行错误处理。
阅读全文