你定義了一個指針,初始化為null,然后你讀取z里面的內(nèi)容,來進(jìn)行大小比較,0地址是正常程序無法訪問地址,引發(fā)內(nèi)存訪問異常,拋出導(dǎo)致printf沒執(zhí)行,我猜測你肯定使用了異常處理,直接忽略異常,導(dǎo)致你沒有發(fā)現(xiàn)錯誤。
創(chuàng)新互聯(lián)建站主營南開網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),南開h5小程序開發(fā)搭建,南開網(wǎng)站營銷推廣歡迎南開等地區(qū)企業(yè)咨詢
那是因?yàn)槟阕x入單個字符的方式不對,純粹的scanf(%c),或者getchar()都會把你上一次輸入的回車符(\n)讀入了。然后你就讀入了一個回車符。正確的方式是讀入到一個字符串,再取字符串首位。
因?yàn)関c6不支持這些符號的輸出,唯一支持的是ascll碼上那些符號。你去找找ascll碼看看你想要的符號如果沒有就無法輸出。
因?yàn)榛剀嚲褪且粋€字符,你輸入完數(shù)字按回車的時候就已經(jīng)輸入字符了。
這句輸入,你輸入完后會敲一下回車鍵,表示你輸入的結(jié)束,這個回車鍵會留在輸入緩沖區(qū)內(nèi),當(dāng)你使用a=getchar();是,他發(fā)現(xiàn)緩沖區(qū)內(nèi)有字符,也就是那個回車鍵,他會在動將回車鍵賦給a,所以才出現(xiàn)跳過的現(xiàn)象。
C語言里的gets()函數(shù)功能是從輸入緩存中讀取多個字符,遇到回車符時,結(jié)束輸入。
因?yàn)槟阒拜斎氲臅r候結(jié)尾用的都是回車所以這個回車字符被輸入到 gets()中了。最好的方法就是清空緩存,調(diào)用fflush()清空緩存,在調(diào)用gets()前清空緩存就行了。
用 fgets( book[i].bn, 100, stdin);這種形式輸入?;剀嚀Q行符就會含在字符串里,輸入不會讀亂。讀入的字符串長度等于 strlen(book[i].bn);最后一個字符是 \n把它賦成 \0 就從字符串里清除了。
估計(jì)是在調(diào)用Creat函數(shù)之前輸入緩沖區(qū)沒有清空。
執(zhí)行了,它把執(zhí)行scanf(%d,&n);時遺留在緩沖區(qū)中的回車符收走了;gets函數(shù)以回車符為結(jié)束命令,所以它以為你已經(jīng)輸入完畢了。解決辦法很多,但正宗的是在gets前面加一句fflush(stdin);把緩沖區(qū)清空。
你猜的沒錯,是會多出一個回車的,因?yàn)閟canf_s(%d,&i);只獲取了輸入流中的整數(shù),跳到第一個gets函數(shù)時,它會獲得之前剩下的回車,如果輸入流為空,那么它會等待用戶輸入。
1、“MGraph G;”沒有初始化。建議做一下修改:void InitGraph(MGraph& G)//創(chuàng)建一個函數(shù)用來生成G圖 { int i,j;G.vexnum=4;...// 其他同,把 return G;去掉。
2、如果調(diào)用函數(shù)寫在主函數(shù)之后。那就要主函數(shù)聲明了。
3、那是因?yàn)槟愕某绦蚋揪蜎]有寫對 比如:老師讓你輸出:1 你寫個程序輸出:2 你的代碼當(dāng)然編譯不會出錯。而且可以很好的運(yùn)行,但是結(jié)果就是永遠(yuǎn)都不會是1,因?yàn)槟憔妥屗敵龅?,結(jié)果怎么會是1呢。
4、讓函數(shù)返回結(jié)構(gòu)體變量;再把datas前的*刪除,讓它成為一個Data型變量;主函數(shù)中把myData前的*刪除,讓它也成為一個結(jié)構(gòu)體變量,把主函數(shù)中的printf中的兩個-改成兩個.就可以了。希望對你有幫助。
1、scanf(%d %s %f %f ,&(p+i)-num,(p+i)-name,&(p+i)-score1,&(p+i)-score2,&(p+i)-score3);//這段代碼里面從鍵盤只讀取了4個值,卻要賦值給5個成員,少了一個%f。
2、scanf(%d%*c,&n);就行了。 這里%*c的意思是讀入一個字符(也就是回車),但是不保存到任何變量里。
3、這個是本身編譯軟件的問題,也不算是屬于BUG。那是由于上一個輸入輸入的函數(shù)最后判斷輸入完畢的回車會在這里生效,而且你寫getchar函數(shù)也會一同運(yùn)行,解決辦法就是寫兩個getchar。
4、不會的跳過去的。如果出現(xiàn)跳過現(xiàn)象,仔細(xì)檢查你的程序,找一找哪里有bug,修復(fù)就好了。
5、默認(rèn)的要去找相關(guān)模塊的符號文件。這個符號文件用于調(diào)試,一般編程不需要??辞闆r你的代碼是正常退出了。問題就出現(xiàn)在scanf上。建議你不要使用這個函數(shù),在循環(huán)輸入時使用它不行。用gets就好了 。