[英]C programming scanf assistance
我試圖建立類的表單/ GPA計算器,但進入的使用scanf函數類的量時,輸出為6487576不管是什么我進入。
int main()
{
int opt;
int c;
printf("*******************************\n");
printf("** Fanshawe Grade Calculator **\n");
printf("*******************************\n");
printf("Please Choose an Option:\n");
printf("[1] Enter Your Marks\n");
printf("[2] Quit\n");
scanf("%d", &opt);
switch(opt) {
case 1 :
printf("********************************************************\n");
printf("** Enter Your Marks For Your Courses (Up to 10 Only): **\n");
printf("********************************************************\n");
scanf("%i", &c);
printf("You Have Entered %i Classes!\n", &c);
/*int i;
for(i=1;i=c;i++) {
printf("Enter Your Mark for Class #%i\n", &i);
}*/
break;
case 2 :
printf("GoodBye!");
exit(0);
break;
}
return 0;
}
請幫助!
當將%i
與scanf()
,它還可以讓您輸入十六進制和八進制數字(這不是此處說明的問題)。 但是,在使用printf()
時不應使用&
,因為它會顯示變量的內存位置,而不是存儲在變量中的值。
嘗試這個:
case 1 :
printf("********************************************************\n");
printf("** Enter Your Marks For Your Courses (Up to 10 Only): **\n");
printf("********************************************************\n");
scanf("%d", &c);
printf("You Have Entered %d Classes!\n", c);
break;
printf("You Have Entered %i Classes!\\n", &c)
輸出變量c
的地址(&c占用地址),即,輸出存儲單元的編號。 由於要傳遞變量的值,因此不應使用取變量&
地址的運算符。
printf("You Have Entered %i Classes!\n", c);
這里有兩個問題。 首先,您需要包括以下標題:
#include <stdio.h> // declares functions like printf and scanf
#include <stdlib.h> // declares functions like exit
如果不包括這些頭文件,則編譯器將不知道如何執行它們或它們的確切格式。 當您嘗試編譯時,警告將無濟於事。 有一些很好的網站可以做到這一點; 只需在Google中搜索“ c exit()”之類的內容,它就會告訴您將來需要哪些標頭。 編譯此代碼時,我使用了gcc main.c -Wall
強制顯示所有警告。
其次,在兩種情況下都使用c
的地址。 當您打印c
的值時,實際上是在打印c
的地址,而不是值。 scanf()
接受變量的地址來存儲值,而printf()
接受變量本身。 該代碼應看起來像這樣:
scanf("%i", &c);
printf("You Have Entered %i Classes!\n", c);
初始化變量總是一個好主意。 這樣,您知道什么時候分配不正確或根本沒有分配。 我忘記分配我的變量一段時間,而在另一台機器上編譯時,它不起作用。 這是因為不同的機器將以不同的方式初始化變量。 只需將代碼更改為以下內容:
int opt = 0;
int c = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.