typedef struct neirong
{
char day[4]; //日期
int top[3]; //1.作業 2.備忘 3.記事
char wen[1000]; //neirong
}; struct neirong nr,rq;
// 包括的結構
void find()
{
FILE *op,*mp;
char fday[30], fwen[30], ch;
int i = 0,s=1,j=0;
op = fopen("D:\\day.txt", "r");
mp = fopen("D:\\netrng.txt", "r+");
if (!(op = fopen("D:\\day.txt", "r")))
{printf("出錯了!\n");}
printf("要查找的日期:");
scanf("%s", fday);
while (1)
{while (strcmp(fday, rq.day) != 0)
{i = i + 1;s = i;
fscanf(op, "%s\n", &rq.day);}
fscanf(op, "%s\n", &nr);
printf("找到了!\n"); break;
for (j= 0; j < s-1; j++)
{
rewind(mp); fscanf(mp, "%*[^\n]%*c"); }
fgets(nr.wen, 30, mp);
printf("%s\n", nr.wen); break;
};fclose(mp);
printf("11");
}
void main()
{
FILE *fp, *lp;
int j = 0, n = 1;
if (!(fp = fopen("D:\\day.txt", "a+")))
{
printf("出錯了!\n");
}
lp = fopen("D:\\netrng.txt", "a+");
while (1)
{
j = j + 1;
printf("今天的日期:");
scanf("%s", rq.day);
fprintf(fp, "%s\n", rq.day);
/*for (n = 1; n < 30; n++)
{if (strcmp(nr[i].day, nr[i + n].day) == 0)
{if (!feof(fp))
{printf("已經有這個日期了!"); exit(0);
}
}
}*/
printf("開始記錄吧:\n");
scanf("%s", &nr.wen); //輸入的內容
fprintf(lp, "%s\n", nr.wen); //輸入進txt
if (getchar() == '\n') break;
} //當最后的一個符號位xxx時 break
fclose(fp);
fclose(lp);//必須關閉檔案否則導致快取消失
find();
}
uj5u.com熱心網友回復:
求求大哥萌了 弄兩天了 要哭了uj5u.com熱心網友回復:
你要打開幾遍啊
一個檔案,只留一個fopen
uj5u.com熱心網友回復:
代碼太亂了,格式不清晰,我不復制到編譯器調整格式我都沒法看。錯誤也很多,你那個nr和rq應該是要一個用來寫一個用來讀吧,你要寫的日期放rq,內容放nr,這么做就沒有搞結構體的必要了,輸出也類似;fscanf(op, "%s\n", &nr);這條陳述句這是要讀取字串到結構體?find()函式里那個while(1)回圈里面放兩個break是什么情況?只執行一次就不要用while,while跟break配合一般要結合if陳述句,滿足特定條件才跳出,你的while回圈下直接放兩個break,遇見第一個的時候就跳出了,后面那一段代碼永遠不執行,既是去掉第一個也是剛執行一遍就遇到break,相當于順序執行uj5u.com熱心網友回復:
main里面向day檔案只寫入了日期,其他的都寫入了內容fprintf(fp, "%s\n", rq.day);
fprintf(lp, "%s\n", nr.wen);
find里面呢, 從日期檔案又讀日期,又讀內容,這個顯然也是不匹配的
fscanf(op, "%s\n", &rq.day);}
fscanf(op, "%s\n", &nr);
uj5u.com熱心網友回復:
#include<stdio.h>#include<string.h>
struct neirong
{
char day[4]; //日期
int top[3]; //1.作業 2.備忘 3.記事
char wen[1000]; //neirong
}; struct neirong nr, rq;
// 包括的結構
void find()
{
FILE *op, *mp;
char fday[30];
int i = 0, s = 1, j = 0;
if (!(op = fopen("D:\\day.txt", "r")))
{
printf("出錯了!\n");
return;
}
if (!(mp = fopen("D:\\netrng.txt", "r+")))
{
printf("出錯了!\n");
return;
}
printf("要查找的日期:");
scanf("%s", fday);
while (strcmp(fday, nr.day) != 0)
{
i = i + 1; s = i;
fscanf(op, "%s\n", nr.day);
fscanf(mp, "%s\n", nr.wen);
}
//fscanf(op, "%s\n", nr.day);
printf("找到了!\n");
//for (j = 0; j < s - 1; j++)
//{
// rewind(mp);
// fscanf(mp, "%*[^\n]%*c");
//}
//fgets(nr.wen, 30, mp);
printf("%s\n", nr.wen);
fclose(mp);
printf("11");
}
void main()
{
FILE *fp, *lp;
int j = 0, n = 1;
if (!(fp = fopen("D:\\day.txt", "a+")))
{
printf("出錯了!\n");
return;
}
if (!(lp = fopen("D:\\netrng.txt", "a+")))
{
printf("出錯了!\n");
return;
}
while (1)
{
j = j + 1;
printf("今天的日期:");
scanf("%s", rq.day);
fprintf(fp, "%s\n", rq.day);
/*for (n = 1; n < 30; n++)
{if (strcmp(nr[i].day, nr[i + n].day) == 0)
{if (!feof(fp))
{printf("已經有這個日期了!"); exit(0);
}
}
}*/
printf("開始記錄吧:\n");
scanf("%s", rq.wen); //輸入的內容
fprintf(lp, "%s\n", rq.wen); //輸入進txt
if (getchar() == '\n') break;
} //當最后的一個符號位xxx時 break
fclose(fp);
fclose(lp);//必須關閉檔案否則導致快取消失
find();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118659.html
標籤:C語言
上一篇:決勝21點(紙牌游戲),第一組組資料沒問題,第二組讀取資料的時候就有問題了,大神教教我這個新手吧!
下一篇:單鏈表的洗掉
