可以运行但是数据错乱。
#include<stdio.h>
int main(){
FILE *fp;
int grade;
fp=fopen(“1.txt”,”grade”);
if(fp==NULL) //第一次打开无数据定义grade为0
{
printf(“无数据存储!\n”);
grade=0;
}
printf(” ******************************\n”);
printf(” *–欢迎进击的程序员–*\n”);
printf(” ******************************\n”);
printf(“1.存入积分 2.查看积分 3.积分清零\n”);
int i;
scanf(“%d”,&i);
if(i==1){
printf(“请输入要存取的积分!\n”);
int j;
scanf(“%d”,&j);
grade=grade+j;
fprintf(fp,”%d\n”,grade);
}
else if(i==2){
printf(“%d\n”,grade);
}
else if(i==3){
grade==0;
printf(“积分已清%d\n”,grade);
}
else{
printf(“输入错误!\n”);
}
fclose(fp);
return 0;
}
#include<stdio.h>
int main(){
FILE *fp;
int grade;
fp=fopen(“1.txt”,”grade”);
if(fp==NULL) //第一次打开无数据定义grade为0
{
printf(“无数据存储!\n”);
grade=0;
}
printf(” ******************************\n”);
printf(” *–欢迎进击的程序员–*\n”);
printf(” ******************************\n”);
printf(“1.存入积分 2.查看积分 3.积分清零\n”);
int i;
scanf(“%d”,&i);
if(i==1){
printf(“请输入要存取的积分!\n”);
int j;
scanf(“%d”,&j);
grade=grade+j;
fprintf(fp,”%d\n”,grade);
}
else if(i==2){
printf(“%d\n”,grade);
}
else if(i==3){
grade==0;
printf(“积分已清%d\n”,grade);
}
else{
printf(“输入错误!\n”);
}
fclose(fp);
return 0;
}
解决方案
30
#include<stdio.h>
int main() {
FILE *fp;
int grade;
int x;
fp = fopen(“1.txt”, “r+”);
if (fp == NULL) //第一次打开无数据定义grade为0
{
printf(“无数据存储!\n”);
grade = 0;
}
printf(” ******************************\n”);
printf(” *–欢迎进击的程序员–*\n”);
printf(” ******************************\n”);
printf(“1.存入积分 2.查看积分 3.积分清零\n”);
int i;
fscanf(fp, “%d”, &grade);
scanf(“%d”, &i);
if (i == 1) {
printf(“请输入要存取的积分!\n”);
int j;
scanf(“%d”, &j);
grade = grade + j;
remove(fp);
fp = fopen(“1.txt”, “w+”);
fprintf(fp, “%d”, grade);
}
else if(i == 2) {
printf(“%d\n”, grade);
}
else if(i == 3) {
grade = 0;
printf(“积分已清%d\n”, grade);
fprintf(fp, “%d”, grade);
}
else {
printf(“输入错误!\n”);
}
fclose(fp);
return 0;
}
int main() {
FILE *fp;
int grade;
int x;
fp = fopen(“1.txt”, “r+”);
if (fp == NULL) //第一次打开无数据定义grade为0
{
printf(“无数据存储!\n”);
grade = 0;
}
printf(” ******************************\n”);
printf(” *–欢迎进击的程序员–*\n”);
printf(” ******************************\n”);
printf(“1.存入积分 2.查看积分 3.积分清零\n”);
int i;
fscanf(fp, “%d”, &grade);
scanf(“%d”, &i);
if (i == 1) {
printf(“请输入要存取的积分!\n”);
int j;
scanf(“%d”, &j);
grade = grade + j;
remove(fp);
fp = fopen(“1.txt”, “w+”);
fprintf(fp, “%d”, grade);
}
else if(i == 2) {
printf(“%d\n”, grade);
}
else if(i == 3) {
grade = 0;
printf(“积分已清%d\n”, grade);
fprintf(fp, “%d”, grade);
}
else {
printf(“输入错误!\n”);
}
fclose(fp);
return 0;
}
50
1.你的fopen的打开模式不对,这里可以用a+
2.你查看积分的时候,应该用fscanf将存在文件里的数字读出来
3.你积分清零的时候,应该将文件给清空,而不仅仅是将grade变成0
2.你查看积分的时候,应该用fscanf将存在文件里的数字读出来
3.你积分清零的时候,应该将文件给清空,而不仅仅是将grade变成0
#include<stdio.h> int main(){ FILE *fp; int grade = 0; fp = fopen("1.txt", "a+"); if (fp == NULL) //第一次打开无数据定义grade为0 { printf("无数据存储!\n"); grade = 0; } printf(" ******************************\n"); printf(" *--欢迎进击的程序员--*\n"); printf(" ******************************\n"); printf("1.存入积分 2.查看积分 3.积分清零\n"); int i; scanf("%d", &i); if (i == 1){ printf("请输入要存取的积分!\n"); int j; scanf("%d", &j); grade = grade + j; fprintf(fp, "%d\n", grade); } else if (i == 2){ fscanf(fp, "%d", &grade); printf("%d\n", grade); } else if (i == 3){ fclose(fp); fopen("1.txt", "w+"); grade = 0; printf("积分已清%d\n", grade); } else{ printf("输入错误!\n"); } fclose(fp); return 0; }