gpt4 book ai didi

c - 在 C 程序执行期间读取文件,并将所有商品及其各自的价格存储在结构商品数组中

转载 作者:行者123 更新时间:2023-11-30 20:42:15 25 4
gpt4 key购买 nike

我该如何解决实验室测试中遇到的这个问题?我尝试过很多次但都失败了。我已经开始学习C语言两个月了。

问:在程序执行期间读取名为 food.txt 的文件,以将所有这些商品及其各自的价格存储在结构商品数组中。

注意:“结构项”包含“字符名称”和“int 价格”。此外,food.txt 的第一行给出了条目数。(命令:./a.out < food.txt)。

编辑:这是我的代码。我找不到我的错误。

#include<stdio.h>

//Defining the struct
typedef struct {
char name[25];
int price;
}item;

int main(){
int n; //Number of entries
int i,j,k,flag;

int temp[40];

scanf("%d",&n);//first line gives number of entries as input

item items[n]; //creating our items struct

int c = getchar();
for(i=0;i<n;i++){
items[i].price=0;
for(j=0;;j++){
c=getchar();
if(c<'0' || c>'9') items[i].name[j]=c; //If c is character, it store it in name
if(c=='\n')break; //If c is \n, it breaks from the loop and starts again with i++
temp[j]=c;
}

for(j=0;;j++){

if(temp[j]>=0 && temp[j]<=9){
items[i].price = (items[i].price)*10 + temp[j];
}
else if(temp[j]=='\n')break;
}
}

printf("\n.........................................\n");
for(i=0;i<n;i++){
printf("%d. %s %d \n",i+1,items[i].name,items[i].price);
}
}

food.txt

8

hot black tea 5

hot lemon tea 6

hot masala tea 7

hot milk tea 9

hot black coffee 7

hot milk coffee 10

finger potato 45

potato chips 35

最佳答案

这是一个了解如何处理此问题陈述的最小示例:

 #include<stdio.h>
#define MAX 100

struct node
{
char name[MAX];
int price;
};

int main(void)
{
int inp;
int count_char=0; //COUNTS THE NUMBER OF CHARACTERS OF A NAME
int count_arr=0; //COUNTS THE NUMBER OF SEPARATE NAME-PRICE STRUCTURES USED
struct node EMPTY={{'\0'},0}; //EMPTY STRUCTURE FOR DEFAULT INITIALIZATION
struct node arr[]={[0 ... 99]=EMPTY}; //ARRAY OF STRUCTURES CONTANING 100 ELEMENTS
int temp_count=0;
int count_space=0; //COUNT NUMBER OF SPACES WITHIN THE STRING

while((inp=getchar())!=EOF)
{
if(inp=='\n')
{
count_space=0;
count_arr++;
count_char=0;
continue;
}
if((((inp>='A')&&(inp<='Z'))||((inp>='a')&&(inp<='z')))||(inp==' '))
{
if((count_char==0)&&(inp==' ')) //LEADING SPACE HANDLING
{
continue;
}
if(inp==' ') //SPACE WITHIN STRINGS HANDLING
{
++count_space;
}
else
count_space=0;
if(count_space>1)
continue;
arr[count_arr].name[count_char++]=inp;
}
if((inp>='0')&&(inp<='9'))
{
arr[count_arr].price = (arr[count_arr].price)*10 + inp - '0';
}
}

while(temp_count<count_arr)
{
printf("%s",arr[temp_count].name);
printf("%d\n",arr[temp_count++].price);
}
return 0;
}

如果文件包含:

输入:

3
xyz 123
abc 89
lmn tub 956

输出:

xyz 123
abc 89
lmn tub 956

注意:可以做很多事情来简化这个示例,但这只是一个最小的演示。

关于c - 在 C 程序执行期间读取文件,并将所有商品及其各自的价格存储在结构商品数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com