- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
晚上好,我正在为一个项目编写代码,我遇到了以下问题:程序关闭后数据无法正确保存。数据在txt文件中保存为多个数组,但它保存了奇怪的信息,请帮忙。注意:info.txt 放在这里是因为项目的第一阶段(我们处于第二阶段)需要,所以除非它不会引起任何问题,否则请忽略它。同样的情况也适用于空函数,在添加帐户时,当我们添加帐户时,我们需要将数组移动到右侧
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
void displayMainMenu();
void displayAccounts();
void addAccount(int ids[],double balances[],long phones[],char types[],int size);
void closeAccount(int ids[], double balances[],long phones[],char types[], int size);
void viewAccountDetails(int ids[],double balances[],long phones[],char types[],int size);
void modifyAccountDetails();
void addAmount();
void withdrawAmount();
void uploadDataFile(int ids[],double balances[],long phones[],char types[],int size);
void updateDataFile(int ids[], double balances[],long phones[], char types[],int size);
int main() {
int choice,i=0,j=0,status;
int id[MAXSIZE];
char name1[MAXSIZE][30],name2[MAXSIZE][30];
long number[MAXSIZE];
char type[MAXSIZE];
double balance[MAXSIZE];
FILE*inp;
inp=fopen("info.text","r");
do {
status=fscanf(inp ,"%d",&id[i]);
fscanf(inp ,"%s%s" ,name1[i],name2[i]);
fscanf(inp ,"%ld" ,&number[i]);
fscanf(inp ,"%c" ,&type[i]);
fscanf(inp ,"%lf" ,&balance[i]);
i++;
} while(status!=EOF);
fclose(inp);
uploadDataFile(id, balance, number, type, i);
printf("Information Loaded successfully\n");
do {
printf("--------main menu---------\n");
printf("1- Add Account\n");
printf("2- View All Accounts \n");
printf("3- Add Amount\n");
printf("4- Withdraw Amount\n");
printf("5- View Account Details\n");
printf("6- Modify Account\n");
printf("7- Close an Account\n");
printf("8- Exit\n");
printf("please enter your choice:");
scanf("%d" , &choice);
switch(choice) {
case 1: addAccount(id,balance,number,type,i);
break;
case 2: displayAccounts(id,balance,number,type,i);
break;
case 3: addAmount();
break;
case 4: withdrawAmount();
break;
case 5: viewAccountDetails(id,balance,number,type,i);
break;
case 6: modifyAccountDetails();
break;
case 7: closeAccount(id,balance,number,type,i);
break;
case 8: displayMainMenu();
break;
default: printf("error\n");
}
} while (choice!=8);
uploadDataFile( id, balance, number, type, i);
printf("Thank you,the information has been updated successfully!\n");
return 0;
}
void displayMainMenu() {
printf("displays the main menu\n");
}
void displayAccounts(int ids[],double balances[],long phones[],
char types[],int size) {
int i;
for(i=0;i<size;i++)
printf("The id is:%d\t\t The balance is:%f\nThe phone number is:%d\t The type is:%s\n",ids[i],balances[i],phones[i],types[i]);
}
void addAccount(int ids[],double balances[],long phones[],char types[],int size) {
int i=0,temp,id,flag,j;
double temp2,balance;
long temp3,phone;
char temp4,type;
printf("Please enter the account's new id\n");
scanf("%d",&id);
if(size<MAXSIZE) {
while(i<size) {
if(id==ids[i]) {
flag=1;
break;
} else {
flag=0;
i++;
}
}
}
if(flag==0) {
for(i=size;i>0;i--) {
ids[i]=ids[i-1];
balances[i]=balances[i-1];
phones[i]=phones[i-1];
types[i]=types[i-1];
}
ids[0]=id;
for(j=0;j<size-1;j++) {
for(i=1;i<size;i++) {
temp=ids[i-1];
temp2=balances[i-1];
temp3=phones[i-1];
temp4=types[i-1];
ids[i-1]=ids[i];
balances[i-1]=balances[i];
phones[i-1]=phones[i];
types[i-1]=types[i];
ids[i]=temp;
balances[i]=temp2;
phones[i]=temp3;
types[i]=temp4;
}
}
printf("Please enter the account's balance\n");
scanf("%lf",&balance);
printf("Please enter the account's phone number\n");
scanf("%ld",&phone);
printf("Please enter the account's type \n");
scanf(" %c",&type);
balances[0]=balance;
phones[0]=phone;
types[0]=type;
printf("Account added!\n");
} else
("the Id is already in use\n");
}
void closeAccount(int ids[], double balances[],long phones[],
char types[], int size) {
int i,j;
int id;
printf("please enter the id u want to close\n");
scanf("%d",&id);
if(size>0) {
for(i=0;j<size;j++) {
for(i=0;i<size-1;i++) {
if(id==ids[i]) {
ids[i]=ids[i+1];
balances[i]=balances[i+1];
phones[i]=phones[i];
types[i]=types[i+1];
} else
printf("error\n");
break;
}
}
}
}
void viewAccountDetails(int ids[],double balances[],long phones[],char types[],int size) {
int id,i=0,flag;
printf("Please input the id for the desired account\n");
scanf("%d",&id);
if(size>0) {
while(i<size) {
if(id==ids[i]) {
flag=1;
break;
} else {
flag=0;
i++;
}
}
}
if(flag==1)
printf("The account information are:\n id: %d/t balance: %f\t phone number:%ld\t Type: %c",ids[i],balances[i],phones[i],types[i]);
else
printf("Error: The account was not found\n");
}
void modifyAccountDetails() {
printf("modifies a certain account details ");
}
void addAmount() {
printf("increases the balance variable");
}
void withdrawAmount() {
printf("decreases the balance variable");
}
void uploadDataFile(int ids[],double balances[],long phones[],char types[],int size) {
FILE*inp;
inp=fopen("Accounts.txt","r");
int i=1;
while(i<size) {
fscanf(inp ,"%d",&ids[i]);
fscanf(inp ,"%ld" ,&phones[i]);
fscanf(inp ,"%c" ,&types[i]);
fscanf(inp ,"%lf" ,&balances[i]);
i++;
}
}
void updateDataFile(int ids[], double balances[], long phones[], char types[], int size) {
FILE*out;
out=fopen("Accounts.txt","w");
fprintf(out,"%d\n",ids);
fprintf(out,"%f\n",balances);
fprintf(out,"%ld\n",phones);
fprintf(out,"%c\n",types);
}
最佳答案
获取编译器警告。如果我们先修复警告,那么我们就会知道得更清楚。
$ gcc database.c
database.c: In function ‘displayAccounts’:
database.c:86:11: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Wformat=]
printf("The id is:%d\t\t The balance is:%f\nThe phone number is:%d\t The t
^
database.c:86:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 5 has type ‘int’ [-Wformat=]
database.c: In function ‘updateDataFile’:
database.c:243:16: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
fprintf(out,"%d\n",ids);
^
database.c:244:16: warning: format ‘%f’ expects argument of type ‘double’, but argument 3 has type ‘double *’ [-Wformat=]
fprintf(out,"%f\n",balances);
^
database.c:245:16: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘long int *’ [-Wformat=]
fprintf(out,"%ld\n",phones);
^
database.c:246:16: warning: format ‘%c’ expects argument of type ‘int’, but argument 3 has type ‘char *’ [-Wformat=]
fprintf(out,"%c\n",types);
您可以在 http://ideone.com/ 中制作一个最小的示例并排除文件 i/o 并仅使用 printf 并查看问题出在哪里(如果不在上面的警告中)。
这些警告意味着您的类型错误,但代码仍然可以运行,并且如果您混合不同的类型,您将从程序中获得未定义的行为或类似行为。小心什么是指针,什么是数据。
关于c - 保存数据时出错,数据无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37092942/
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!