我对C(高中生)还很陌生,我的目标是通过输入一组字符来制作购物清单。然后,输出将打印出我当前添加到列表中的内容。这将一直持续下去,直到我退出程序或进入主菜单。
SCREEN1
00 - GO TO GREETINGS SCREEN
01 - ADD MORE ITEMS TO THE LIST
CODE ENTRY: ___
SCREEN2
然后输入01以添加项目:
Input "DONE" to end program and see final list.
LIST ENTRY: ______________
SCREEN3
然后我添加“苹果”,然后将我带到该屏幕:
GROCERY LIST:
POTATOES
FISH
APPLES
此后,我回到SCREEN1,在这里我可以选择是进入问候语屏幕还是添加其他内容。
我的当前代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int n;
char * grocery;
mainMenu:
system("cls");
n = 0;
printf("00 - Go to greetings screen\n01 - Add groceries to list\nENTRY: ");scanf("%d",&n);
if(n == 0)
{
greetings();
goto mainMenu;
}
else if(n == 1)
{
printf("GROCERY ENTRY: ");scanf("%s",grocery);
add(grocery);
goto mainMenu;
}
else
{
printf("Wrong value added. Try again.");
sleep(2);
goto mainMenu;
}
}
void greetings()
{
system("cls");
printf("hello! press any key to go back to menu");
getch();
system("cls");
}
void add(char * a)
{
system("cls");
char listData[1000] = "",slashN[4] = "\n";
strcat(listData,a);
strcat(listData,slashN);
printf("THINGS TO BUY:\n");
puts(listData);
}
NOTES
我使用strcat以便记住原始字符串的值。这样可以确保将新输入仅放在旧数据之上,对吗? (希望我的逻辑是正确的)
尽管,即使我切换到其他菜单,如Greetings Menu(它是占位符的占位符,计算器)。
现在,除了杂货清单之外,初始功能都起作用。每当我输入一个字符串时,即使printf("THINGS TO BUY:")
部分也没有任何结果,使我认为这与我在void add(char * a)
]中输入的内容有关
我对C(高中生)还很陌生,我的目标是通过输入一组字符来制作购物清单。然后,输出将打印出我当前添加到列表中的内容。这会继续...
尝试了您的代码后,我收到一个分割错误,您的位置为scanf("%s",grocery);
。尝试使用malloc(3)为变量分配空间(请参见http://man7.org/linux/man-pages/man3/malloc.3.html)。例如,char *grocery = (char *)malloc(sizeof(char) * 100);
将为您提供100个字符以从输入中读取杂货变量。