文本文件a.txt中存放有一段英文文字,编写两个版本的程存,将其中的字母'a'全部替换为'A',其它保持不变. (/)版本一︰追求最快的运行速度﹒(介绍一个库函数strchr() ) ( 2)版本二︰追求最小的内存使用量.
时间: 2024-05-15 07:14:19 浏览: 67
版本一:
```c
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char str[100], *p;
fp = fopen("a.txt", "r");
while (fgets(str, 100, fp) != NULL) { // 逐行读取文件内容
p = strchr(str, 'a'); // 查找第一个出现的字母a的位置
while (p != NULL) {
*p = 'A'; // 将该位置的字母a替换为A
p = strchr(p+1, 'a'); // 继续查找下一个字母a的位置
}
printf("%s", str); // 输出替换后的字符串
}
fclose(fp);
return 0;
}
```
版本二:
```c
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char *str, *p;
size_t len = 0;
ssize_t read;
fp = fopen("a.txt", "r");
while ((read = getline(&str, &len, fp)) != -1) { // 逐行读取文件内容
p = strchr(str, 'a'); // 查找第一个出现的字母a的位置
while (p != NULL) {
*p = 'A'; // 将该位置的字母a替换为A
p = strchr(p+1, 'a'); // 继续查找下一个字母a的位置
}
printf("%s", str); // 输出替换后的字符串
}
fclose(fp);
return 0;
}
```
两个版本的区别在于第一个版本使用了固定大小的字符数组来存储每行文件内容,而第二个版本使用了动态分配内存的方式来存储每行文件内容。第二个版本的内存使用量更小,但是需要调用getline()函数来读取文件内容。
阅读全文