我正在为一个初级C编程课做一个项目,我应该为公司制作一个基本的订购系统.我的一个函数有问题,它作为一个单独的程序工作正常,但作为订购程序中的一个函数,它不会让我在退出函数之前输入一个新项目.然而,似乎在获得(项目)之后运行所有内容; 因为每次运行它都会添加\n.
这是我的代码:
do{
printf("Menu here");
scanf("%c", &menu);
switch(menu)
{
case 'A':
listItem();
break;
case 'B':
addItem();
break;
...
case 'X':
break;
}
printf("Press Enter to continue.");
scanf("%c%c", &enter, &enter);
system("cls");
}while(menu != 'X');
void addItem()
{
char item[30];
printf("\nAdd new item: ");
gets(item);
FILE * output;
output = fopen("items.txt", "a");
fputs(item, output);
fprintf(output, "\n");
fclose(output);
}
Run Code Online (Sandbox Code Playgroud)
转换后的东西是我的老师认为是一个丑陋而有效的方法来解决这个事实,即我们没有深入研究他在本课程中所谓的"C输入的怪癖".
我很感谢任何提示和答案,并会在必要时提供更多我的代码.
又回来了另一个菜鸟问题.在为我的家庭作业项目工作时,我发现当我按X时我的菜单不会退出,它只在一小时前工作,而我在main()中没有改变任何东西.我注释掉了函数中的所有代码,以确保函数中的任何内容都不会受到干扰.我只是找不到任何问题,并会感激任何帮助.
int main()
{
char val, enter;
int c;
/* loopa med do-while */
do
{
printf("===============================\n");
printf(" Olja i Norge AB\n");
printf("===============================\n\n");
printf(" Artikelregister\n");
printf(" A. Lista artiklar\n");
printf(" B. L\x84gg till artikel\n");
printf(" C. Radera artikel\n");
printf(" D. \x8Endra artikel\n\n");
printf(" Kundregister\n");
printf(" E. Lista kunder\n");
printf(" F. L\x84gg till kund\n");
printf(" G. Radera kund\n");
printf(" H. \x8Endra kund\n\n");
printf(" Ordrar\n");
printf(" I. Best\x84ll\n");
printf(" J. Lista ordrar\n\n");
printf(" X. Avsluta\n");
printf("\n===============================");
printf("\n===============================\n");
printf("V\x84lj: ");
scanf("%c", &val);
do …Run Code Online (Sandbox Code Playgroud) c ×2