代码为什么不能正常运行:#include<stdio.h> #include<stdlib.h> #include<string.h> # define MAX 100 FILE * fp;//文件指针 void write(char bt[MAX]){ char nr; FILE * fp1; fp1=fopen(bt,"a"); //本地文件查找"max+.txt"文件,以追加方式打开 for(int i=0; i<MAX; i++) { int j=0;//"="个数 if( nr=='=') j++; // else j=0; fread(&nr,1,1,fp);//一次读一个字符 进字符数组 fwrite(&nr,1,1,fp1); //读一个,写一个 if(j==9){ fclose(fp1); break; //连续10个"=",跳出循环 } } } void read(void) { FILE * fp1; char bt[MAX];//临时 标题 for(int i=0; i<MAX;i++){ if( bt[i-1]=='-'&& bt[i]=='\0') //判断是否读完标题 { bt[i-1]='.';bt[i]=bt[i+2]='t';bt[i+1]='x'; write(bt); } fread(&bt[i],sizeof(char),1,fp);//一次读一个字符 进字符数组 } } int main(void){ char filename[]="My Clippings.txt"; if((fp=fopen(filename,"r"))==NULL) //以只读方式,查看能否打开文件 { printf("can not open the files\n"); system("pause"); return 0; } do { read() ; }while(fp != NULL ); fclose(fp);//关闭文件My Clippings.txt return 0; }
时间: 2023-06-17 12:06:18 浏览: 81
在你的代码中,有几个问题需要注意一下:
1. 在 `read()` 函数中,你需要在每次循环前检查是否已经到达文件末尾,可以使用 `feof(fp)` 函数来判断。
2. 在 `write()` 函数中,你用了一个未初始化的变量 `nr`,应该先给它赋一个初值。
3. 在 `write()` 函数中,你将打开的文件指针命名为 `fp1`,但是在写文件时却使用了未初始化的 `fp` 指针。
4. 在 `main()` 函数中,你的文件读取循环条件错误,应该是 `while(!feof(fp))`。
下面是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
FILE *fp; //文件指针
void write(char bt[MAX])
{
char nr = '\0'; //初始化为 0
FILE *fp1;
fp1 = fopen(bt, "a"); //本地文件查找"max+.txt"文件,以追加方式打开
for (int i = 0; i < MAX; i++)
{
int j = 0; //"="个数
if (nr == '=')
j++;
else
j = 0;
fread(&nr, 1, 1, fp); //一次读一个字符 进字符数组
fwrite(&nr, 1, 1, fp1); //读一个,写一个
if (j == 9)
{
fclose(fp1);
break; //连续10个"=",跳出循环
}
}
}
void read(void)
{
char bt[MAX] = {0}; //临时 标题
for (int i = 0; i < MAX; i++)
{
if (feof(fp)) //到达文件末尾
{
fclose(fp);
fp = NULL;
break;
}
fread(&bt[i], sizeof(char), 1, fp); //一次读一个字符 进字符数组
if (bt[i - 1] == '-' && bt[i] == '\0') //判断是否读完标题
{
bt[i - 1] = '.';
bt[i] = bt[i + 2] = 't';
bt[i + 1] = 'x';
write(bt);
}
}
}
int main(void)
{
char filename[] = "My Clippings.txt";
if ((fp = fopen(filename, "r")) == NULL) //以只读方式,查看能否打开文件
{
printf("can not open the files\n");
system("pause");
return 0;
}
do
{
read();
} while (fp != NULL);
return 0;
}
```
阅读全文