#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h> //無用
void main()
{
{
printf("hw 附加題\n");
int i,j=0,n[1000];
char a[1000];
gets(a); //輸入字串如:1-2
for(int k=0;;k++)
{
if(a[k]<='9'&&a[k]>='0') //如果字符為數字
{
sscanf(a,"%d",&n[j]); //將字符轉化為整型
printf("n[%d]=%d ",j,n[j]);
j++;
}
else if(a[k]=='\n') //遇到回車結束
{
break;
}
}
}
這段代碼的目的是跳過輸入的字串中的±號,將數字
字符轉化為整型并賦給n[j]
問題:總是只能執行第一次,如輸入1-2,那么結果為:n[0]=1。
后面的2不知道跑哪去了
uj5u.com熱心網友回復:
你的sscanf讀的是a啊,也就是從頭讀起。uj5u.com熱心網友回復:
那我怎么樣才能把a[i]一一對應的轉化為n[i]?
uj5u.com熱心網友回復:
這句改為:sscanf(&a[k],"%d",&n[j]); //將字符轉化為整型
uj5u.com熱心網友回復:
轉化的問題,我用另一種方法解決了,結果又碰到另一個bug。超級奇怪,麻煩看一下
uj5u.com熱心網友回復:
發了發了,帖子
uj5u.com熱心網友回復:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h> //無用
void main()
{
// {
printf("hw 附加題\n");
int i,j=0,n[1000];
char a[1000],tmp[2];
gets(a); //輸入字串如:1-2
for(int k=0;;k++)
{
if(a[k]<='9'&&a[k]>='0') //如果字符為數字
{
tmp[0]=a[k];tmp[1]= '\0';
printf("tmp=%s\n",tmp);
sscanf(tmp,"%d",&n[j]); //將字符轉化為整型
printf("n[%d]=%d ",j,n[j]);
}
else if(a[k]=='\n') //遇到回車結束
{
break;
}
}
}
uj5u.com熱心網友回復:
謝謝!
我還有一個帖子,麻煩看看吧X﹏X
uj5u.com熱心網友回復:
說實話,沒太看懂。。。tmp定義是做什么的啊?我原來的代碼里tmp好像沒啥用。。。
還有就是,你的藍色背景的代碼是怎么貼上去的啊?
哦,最最重要的還是我發的另一個帖子。。快被整瘋了,麻煩看一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269222.html
標籤:C語言
上一篇:請問一下 為什么會不斷輸入
