簡體   English   中英

C編程scanf協助

[英]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;
}

請幫助!

當將%iscanf() ,它還可以讓您輸入十六進制和八進制數字(這不是此處說明的問題)。 但是,在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM