c - 如何在 txt 中获取内容并存储在 c 中的数组中
问题描述
我是编程菜鸟,所以如果下面的代码不好,请不要怪我。我正在做一个关于库存系统的项目。该系统有修改和搜索五个功能。我的想法是让用户输入记录号并将存储在txt中的数据返回到数组并显示具有正确ID的数据。这样,用户可以编辑事物是某个结构数组。但我不知道如何将 txt 中的数据获取到数组中。这是 poissibe 或任何替代解决方案。
声明
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
#define false 0
struct RecordData {
char RecordNum[10];
char ItemName[ 50 ];
int ItemNum ;
char Category[ 50 ];
int Quantity;
char Recipient[ 50 ];
char Destination[ 50 ];
char Delivery[ 100 ];
};
struct RecordData record[MAX];
FILE *fp;
函数添加记录
int addrecord(){
int x, i = 0;
char ch, yesno;
char space = ' ';
doagain:
printf("1) Enter Record Number:");
gets(record[i].RecordNum);
printf("2) ItemName\nEnter :");
gets(record[i].ItemName);
printf("3) ItemNumber\nEnter :");
scanf("%d%c", &record[i].ItemNum, &ch);
printf("4) Category\nEnter : ");
gets(record[i].Category);
printf("5) Quantity\nEnter : ");
scanf("%d%c", &record[i].Quantity, &ch);
printf("7) Recipient\nEnter : ");
gets(record[i].Recipient);
printf("8) Final Destination\nEnter : ");
gets(record[i].Destination);
printf("9) Delivery status \nEnter : ");
gets(record[i].Delivery);
fp = fopen("stock.txt", "a");
fprintf(fp, "%04d\n", i);
fprintf(fp, "%s\n%d\n%s\n%d\n%s\n%s\n%s\n%c\n", record[i].ItemName, record[i].ItemNum,
record[i].Category, record[i].Quantity, record[i].Recipient, record[i].Destination, record[i].Delivery, space);
fclose(fp);
enterys:
printf("Do you want to add other record? Yes(Y) or No(N)");
scanf("%s", &yesno);
switch (yesno){
case 'Y':
case 'y':
i++;
goto doagain;
break;
case 'N':
case 'n':
printf("end program\n");
system("cls");
return main();
break;
default:
printf("you have enter wrong input");
goto enterys;
}
}
主要的
int main(){
int num;
char space, ch;
mainGUI:
printf("1. Add New Item<s>:");
printf("\n2. Display Item Record:");
printf("\n3. Search Item Information:");
printf("\n4. Modify Item Record<s>:");
printf("\nDelete Item Record<s>:");
printf("\nWhat is your option? <1-5>");
scanf("%d", &num);
system("cls");
switch (num)
{
case 0:
printf("Quit^_^");
system("cls");
break;
case 1:
printf("You Are Now Adding New Item<s>:\n");
addrecord();
break;
case 2:
printf("You Are Now Displaying Item<s>:");
display();
printf("Press any Button to Go Back Menu");
scanf("%c%c", &ch, &space);
if (space == ' '){
system("cls");
goto mainGUI;
}else{
system("cls");
goto mainGUI;
}
break;
case 3:
printf("You Are Now searching items New Item<s>:");
break;
case 4:
printf("You Are Now Adding New Item<s>:");
break;
case 5:
printf("You Are Now Adding New Item<s>:");
break;
default:
printf("Enter Wrong input\n");
goto mainGUI;
break;
}
return 0;
}
解决方案
结帐下面提到的片段。这应该会敲响一些钟声。
fp = fopen("stock.txt", "r");
if (fp == NULL){
printf("Cannot open file \n");
return 0;
}
i = 0;
ch[i] = fgetc(fp);
while (ch != EOF){
i++;
ch[i] = fgetc(fp);
}
fclose(fp);
return 1;
推荐阅读
- python - 合并在 pandas 中的工作原理
- excel - 如何使用 dax 查询基于多行获取条件计数
- javascript - 尝试创建调度程序时出现类型错误
- azure-devops - 在 VSTS 中删除其他一些工作项后无法删除/修改一些工作项
- css - 打开 chrome 开发工具时响应式站点中断
- r - r 如何将 mapply 与数据表一起使用
- javascript - 在代理处理程序中,如何区分获取属性(var)与调用方法?
- java - 以 dd-MMM-yy HH:mm 格式减去两个日期
- amp-html - 如何重定向页面放大器?
- c# - Asp.NET MVC:返回视图时控制器清单错误