gpt4 book ai didi

c - 使用 isdigit 后如何将字符串打印到数组中?

转载 作者:行者123 更新时间:2023-11-30 16:28:56 24 4
gpt4 key购买 nike

我对 isdigit 和字符串非常陌生。我真的需要你们的帮助。我想将字符串打印到数组“food[f]”中。但是你们能帮我检查一下我的问题在哪里吗?这是我的代码。

#include <stdio.h> 
#include <stdlib.h>
#include <ctype.h>

int main()
{
char foo[20];
float price;
int number=1;
int f=0,i=0;
char *food[f];

adding_food :

food[f] = (char*)malloc(25);

printf("Adding food into Menu (0 to Main Menu): ");
scanf("%s", foo);
{
if(isdigit(foo[0])== 0)
{
foo[i] = *food[f]; //something wrong here

printf("Enter price (RM) : ");
scanf("%f",&price);

printf("\n%-16d%-19s%6.2f\n\n",number,foo,price);
printf("\n%-16d%-19s%6.2f\n\n",number,food[f],price);

number++;
i++;
f++;

goto adding_food;
}
else
return 0;
}
}

我希望我的输出是这样的

Adding food into Menu (0 to Main Menu) : Cake

Enter price (RM) : 10

1 Cake 10 //foo[0]

1 Cake 10 //food[0]

最佳答案

您的代码中有几个错误。示例:

char *food[f];

类似于

char *food[0];

因为f为零。这没有任何意义。

此外,使用 goto 也不被认为是好的风格。

那么让我向您展示另一种方法。像这样的东西:

// Make a type that can hold both a name and a price
struct item
{
char name[25];
float price;
};

#define MAX_ITEMS 100

struct item* addItems(int* n)
{
*n = 0;
struct item* items = malloc(MAX_ITEMS * sizeof *items);
if (items == NULL) return NULL;

while (*n != MAX_ITEMS)
{
scanf("%24s", items[*n].name);
if (items[*n].name[0] == '0') break;

scanf("%f", &items[*n].price);

*n += 1;
}
return items;
}

void print_all(struct item* my_items, int num_items)
{
for (int i = 0; i < num_items; ++i)
printf("%s %f\n", my_items[i].name, my_items[i].price);
}

int main()
{
int num_items;
struct item* my_items = addItems(&num_items);
print_all(my_items, num_items);
free(my_items);
}

关于c - 使用 isdigit 后如何将字符串打印到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154382/

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