阿丟最近遇到些麻煩了,需要從一串字符串中找到其中的數字,親愛的同學們,你能幫他麼?(不考慮負數)
輸入
輸入數據有多組,以EOF結束,每行一個字符串,需要將其中的數字輸出來,比如:
輸入:
asdfjal;jdf234324jlkasdfjlsj35j32i532sdf1
sdgjkafjldsjflsdjfjirtpfihsdfblmdvl
123124isdfjalfl34jljl
有一點出題的學長沒有說明:注意前導0的情況!-----尕小豪
如:
00000hfjkahk353k5hkhdf900kdk45
輸出為:
353590045
輸出
按以下格式輸出,若字符串中沒有數字,空一行
Case #1:
23432435325321
Case #2:
Case #3:
12312434
樣例輸入
asdfjal;jdf234324jlkasdfjlsj35j32i532sdf1
sdgjkafjldsjflsdjfjirtpfihsdfblmdvl
123124isdfjalfl34jljl
樣例輸出
Case #1:
23432435325321
Case #2:
Case #3:
12312434
提示
數字可能比較大,unsigned long long裝不下
下面是小白我代碼,由於這個沒有我想得那麼水所以代碼寫得漏洞百出,大家請輕點吐槽,關鍵是怎麼去掉字符串前導0,不用轉化成整數形式最好,不然又得考慮數字太大裝不下怎麼辦。
#include
int main()
{
int n,i,x,y,z,k,add;
x=y=z=0;
k=0;
char s[1000];
char b[1000];
char c[100];
add=0;
while(scanf("%s",s)!=EOF)
{
k++;
x=0;
for(i=0; s[i]!='\0'; i++)
{
if(s[i]>=48&&s[i]<=57)
{
b[x++]=s[i];
}
}
//int.parse(b);
//add+=b[x];
// if(add!=0)
// printf("Case #%d:\n%d",k,b[x]);
}
printf("%s",c);
}
bool key = false;
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] >= 48 && s[i] <= 57)
{
if (key || s[i] != '0')
{
if (s[i] != '0') key = true;
b[x++] = s[i];
}
}
}
b[x] = '\0';
printf("%s", b);