可以运行但是数据错乱。
#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;
}