首先,我知道過類似的問題,但我相信我的情況有所不同。如何從字符串中提取多位數字?
我的輸入字符串是:
(5,7)(1,6)(2,4)(10,14)(8,9)
我寫了下面提取到數組中的代碼。
main(){
char s[100];
int i=0,x,n=0;
int a[20];
printf("Enter the sets:");
gets(s);
x=strlen(s);
while(i<x){
if((s[i]=='(' && s[i+2]==',') || (s[i]==',' && s[i+2]==')'))
{
a[n]=s[i+1]-'0';
n++;
}
i++;
}
for(i=0;i<n;i++){
printf("%d\n",a[i]);
}
}
我得到的輸出是:
我明白爲什麼我的代碼將跳過具有2個或更多的數字號碼。 請對本代碼提出一些小修改來解決此限制。
P.S.-我正在尋找一個不依賴於數字長度的解決方案。
我強烈建議不要接受這個答案,因爲它不正確。只有2位數字纔是正確的,但當涉及3位或更多數字時,它不能正常工作。下面有很多好的答案。 – Mirakurun
@Mirakurun - 如果輸入的格式與問題中的格式完全相同,則代碼適用於兩位數以上的數字。你能否提供破壞代碼的測試用例? – rht