程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> scanf gets-為什麼 我就將gets換成了scanf就不會出現這樣的問題了

scanf gets-為什麼 我就將gets換成了scanf就不會出現這樣的問題了

編輯:編程綜合問答
為什麼 我就將gets換成了scanf就不會出現這樣的問題了

#include"stdio.h"
#include"ctype.h"
int main()
{
char a[80]={0};
int n;
scanf("%d",&n);
while(n--)
{
gets(a);
int i,num,sum=0;
for(i=0;a[i];i++)
{
if(isdigit(a[i+1]))
{
if(isdigit(a[i+2]))
num=10*(a[i+1]-48)+a[i+2]-48;
num=a[i+1]-48;
}
else num=1;
if(a[i]=='C') sum+=12*num;
else if(a[i]=='H') sum+=num;
else if(a[i]=='O') sum+=num*16;
else if(a[i]=='N') sum+=num*14;
else if(a[i]=='S') sum+=num*32;
else continue;
}
printf("%d\n",sum);
}
return 0;
}圖片說明
我把gets(a)換成scanf("%s",a) 就不會看到0了 求大神解答 感激不盡

最佳回答:


第一個scanf讀一個數,還有回車在緩沖區裡。可以先清空,再讀。

    scanf("%d",&n);
    fflush(stdin);//清空緩沖區
    while(n--)
    {
        gets(a);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved