我的计划中有什么错误?这是代码:
/*
* courseProject.c
*
* It is a simple database for record shop
* to track its iventory of CDs
*
* by Mahmoud Emam, 2012.
*/
#include<stdio.h>
main()
{
/*
* CDs infrormations
*/
char title[31], artist[31];
short int numberOfTracks; /* short to save memory */
int albumOrSingle; /* Boolean to check 1 for Album and 0 for Single */
float price;
printf("Hello, Welcome to Record Shop!\n\n");
/*
* Asking for CD details
*/
printf("Enter CD details\n\n");
printf("CD's Title: ");
scanf("%[^\n]", title);
fflush(stdin);
printf("CD's Artist: ");
scanf("%[^\n]", artist);
printf("Number of tracks: ");
scanf("%d", &numberOfTracks);
printf("Please press \"1\" for album, \"0\" for single: ");
scanf("%d", &albumOrSingle);
printf("CD's Price: ");
scanf("%f", &price);
/*
* Output CD details
*/
printf("\nCD details:\n");
printf("=============\n\n");
printf("CD's Title: <%s>\n", title);
printf("CD's Artist: <%s>\n", artist);
printf("Number of tracks: <%d>\n", numberOfTracks);
if (albumOrSingle)
printf("This is <Album>\n");
else
printf("This is <Single CD>\n");
printf("Its price = <%.2f>\n", price);
printf("=============\n\n");
/* Exit from program */
printf("Press any key to exit\n");
fflush(stdin);
getchar();
}
这是一个简单的程序,它从用户读取CD信息并在屏幕上再次输出详细信息。但是,artist
变量始终为空。为什么呢?
我从用户那里读了printf("%s", artist);
并且它正常工作,但它在程序结束时不起作用。变量始终为空。
答案 0 :(得分:2)
变量numberOfTracks
是short int
,但您正在使用scanf
的{{1}}说明符读取它,该说明符读取%d
。这会导致未定义的行为 - 在这种情况下,它可能会覆盖其他变量,例如int
。
使用artist
说明符(读取%hd
),或将变量更改为short int
。
答案 1 :(得分:0)
好吧,numberOfTracks是一个简短的,你正在做一个scanf(&#34;%d&#34;,&amp; numberOfTracks),这将产生有趣的结果。
另外,main是int main(),你应该返回一个值。此代码的可能结果是您的程序将以随机值终止,该值恰好与用户的按键密切相关。