最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

gcc中編程出個問題

作者:bl20020825 欄目:驅動編程
gcc中編程出個問題
我red hat linux9中自帶的GCC中試了個程序,但總會出現(xiàn)問題,我剛入門,不知是不是我c程序有問題,請大家指點一下,程序main.c如下:
#include<stido.h>
void bookinput(CHAR title[], float * price)
     {
       printf("please enter book record:\n");
       scanf("%s %f",title,price);
     }
void printbook(CHAR title[],float price)
    {
       printf("the book record is:%s %f\n",title,price);
    }
CHAR ask(void)
    {
       CHAR i;
       printf("Do you want to enter again?\n");
       scanf("%c",&i);
     }
void main(void)
     {
      CHAR title[30];
      float price;
      do
      {
         bookinput(title,&price);
         printbook(title,price);
       }
       while(ask()=='y');
      }


以上就是全部的程序,然后我編譯
# gcc main.c -o main

執(zhí)行
# ./main
please enter book record:
linux  2.5
the book record is:linux 2.5
Do you want to enter again?
#

就是在“Do you want to enter again?”后面沒有等你輸入字符,就結束了整個程序,這是為什么呢?請大家指點一下

2樓: >>參與討論
em_minzh
ask函數(shù)沒有返回值
ask函數(shù)最后應該返回i的值,增加一句:return i;

3樓: >>參與討論
db10
em_minzh
 看得很仔細阿!

4樓: >>參與討論
goodluckwu
問題的關鍵在這里
二樓的說的是個問題,但是樓主的提出的問題不在那里。
如果只是返回的問題。在scanf處就應該會停下來。但實際的情況下是在scanf那里根本沒有停留。將10賦給了i。

出現(xiàn)這個問題的原因似乎是scanf不太認%c這個參數(shù)。好久不用c了不是特別的熟悉了。好像以前碰到過這個問題。
將樓主的程序修改了一下。就可以了。

5樓: >>參與討論
goodluckwu
修改后的代碼:
#include <stdio.h>

typedef struct _Book{
    CHAR title[40];
    float price;
}Book;

void inputbook(Book *book)
{
    printf("Please enter book record:\n");
    scanf("%s %f", &(book->title), &(book->price));
}

void printbook(Book *book)
{
    printf("the book record is: %s %f\n",
        book->title,
        book->price);
}

CHAR ask()
{
    CHAR buf[10];
    printf("Do you want to enter another book?\n");
    scanf("%s", buf);
    //printf("i=%s\n",buf);
    return buf[0];
}

int main(void)
{
    CHAR result = 'y';
    Book book;
    while(result == 'y'){
        inputbook(&book);
        printbook(&book);
        result = ask();
    }
    return 0;
}




6樓: >>參與討論
goodluckwu
順便說一句
樓主你的代碼縮進好亂。
原來我以為是粘貼到html之后造成的。
現(xiàn)在看來我貼過來的代碼并不亂。
即使只是做一個編程愛好者,也應該至少保持統(tǒng)一的縮進風格,使別人看你的代碼方便一點。

7樓: >>參與討論
rzsheng
樓上的說得好呀
喜歡樓上的編程風格

8樓: >>參與討論
jzp1
問題的在于
問題在于分析清楚scanf("%c",&i);這條語句它掃描進來是什么?
它掃描進來的是上一次輸完后的"回車符"
修改的方法有很多種,goodluckwu兄的結構體用的還是變好的.


9樓: >>參與討論
em_minzh
使用scanf("%c",&i)產(chǎn)生的問題實質(zhì)
使用scanf("%c",&i)產(chǎn)生的問題實質(zhì)是:
當程序運行到:
scanf("%s %f", &(book->title), &(book->price));
時,用戶輸入title,price數(shù)據(jù)后一定會輸入一個回車符,而這個回車符恰好又被作為
scanf("%c",&i);的輸入而接收。也就是說,回車符被保留到了變量i中。
這樣ask函數(shù)返回了回車符,程序自然要結束了。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
如何讓linux在筆記本上運行??
請過來人指點:學linux還是wince?
FC6下arm-elf-tools安裝問題
armlinux編寫多任務應用,用多進程還是多線程.
在linux下有jtag下載程序嘛?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號