代碼:
#include<stdio.h>
int main()
{
char shuzu[1000000];
int num,i;
scanf("%d",&num);
for(i=1;i<=n;i++ )
{
scanf("%c",&shuzu[i]);
}
for(i=1;i<=num;i++)
{
if((shuzu[i]>=65&&shuzu[i]<=90)||(shuzu[i]>=97&shuzu[i]<=122))
printf("%d\n",shuzu[i]);
else
printf("illegal\n");
}
return 0;
}
我的愿望是:輸入:
4
a 來分別得到abcd的ASCII碼:97
b 98
c 99
d 100
(注意輸入的格式,輸完一個字母后是有回車鍵的)
但是只能這個代碼只能輸入4abcd一列來得到結果,就是scanf后面的enter鍵也被計入了。
為什么?有什么解決辦法?
新學c,代碼有點菜。
uj5u.com熱心網友回復:
因為\n也是一個字符,所以要用getchar來接識訓車for(i=1;i<=n;i++ )
{
getchar();
scanf("%c",&shuzu[i]);
}
uj5u.com熱心網友回復:
可以像 #1 那樣做,也可以直接寫 scanf(" %c", &shuzu[i]),看你個人偏好了。uj5u.com熱心網友回復:
呃,謝謝。
想問下為啥只有%c才會出現這種情況,而輸入%d的時候不會發生錄入回車鍵的情況。
uj5u.com熱心網友回復:
我想先問問,你確定你的代碼能跑嗎?#include<stdio.h>
int main()
{
char shuzu[1000000];
int num,i;
scanf("%d",&num);
for(i=1;i<=n;i++ )
{
陣列開1MB,堆疊沒有溢位?
n沒有定義,就可以回圈?
uj5u.com熱心網友回復:
scanf 遇到回車的處理, 看看scanf函式的說明, 它把回車留在緩沖區里面沒有提取走, 所以下次getchar或者%c格式的scanf都會遇到它轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/148938.html
標籤:C語言
