首先,我知道过类似的问题,但我相信我的情况有所不同。如何从字符串中提取多位数字?
我的输入字符串是:
(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