求一个c语言写的程序 急!

就是传入一个字符串,然后我要把用“|”分割开的数字截取出来 并且作为int存到一个int的数组里面去 例如“316|1756|808|808|75|924|784|808|75|811|2306|880|960|1380|1027|2248|1401|2171|1138|889|1027|960|185|504|152|1651|2248|889|1138|914|2306|1513|960|1730|914|”这样一串字符串,然后最后ans[0]就是316,ans[1]就是1756依次类推

自己看吧,我也不多解释:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

int StrParse(const char *szStr,char *szParse,int nIndex,char *szOut,int nOut)
{
if (!szStr||!szParse||!szOut||nIndex<0||!szOut||nOut<1) return 0;
int nParse=strlen(szParse);
*szOut=0;
char *szStart;
char *szEnd;
int i;

*szOut=0;

if (nParse<1) return 0;
if (strlen(szStr)<1) return 0;

szStart=(char *)szStr;

for (i=0;i<nIndex;i++)
{
szStart=strstr(szStart,szParse);
if (!szStart) return 0;
szStart+=strlen(szParse);
}

szEnd=strstr(szStart,szParse);

if (!szEnd)
{
strncpy(szOut,szStart,strlen(szStart));
*(szOut+strlen(szStart))=0;
}
else
{
int nLen=szEnd-szStart;
if (nLen>0)
{
strncpy(szOut,szStart,nLen);
*(szOut+nLen)=0;
}
}
return 1;
}

void main()
{
char *data="316|1756|808|808|75|924|784|808|75|811|2306|880|960|1380|1027|2248|1401|2171|1138|889|1027|960|185|504|152|1651|2248|889|1138|914|2306|1513|960|1730|914|";

int ans[100]={0};
int i,j;
char tmp[50];
for (i=0;i<100;i++)
{
if (!StrParse(data,"|",i,tmp,sizeof(tmp))) break;
ans[i]=atoi(tmp);
printf("%d = %d\n",i+1,ans[i]);
}

getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-21

应该能看懂,比较简单,太复杂了我也不会......下面是程序:

#include<stdio.h>

#include<string.h>

void main()

{

char a[300];

int ans[100];

int i,j,k=-1,l,m,n=0,b,cnt=0;

gets(a);

i=strlen(a);

for(j=0;j<i;j++)

if(a[j]=='|')

{

l=j-k-1;

for(m=k+1,b=0;b<l;b++,m++)

{

n=n*10;

n+=(a[m]-'0');

}

ans[cnt++]=n;

n=0;

k=j;

}

for(i=0;i<cnt;i++)

printf("%d\n",ans[i]);

}

运行结果如图(我这个是自己输入数据的,因为例子中数据太多,我只输入了一部分):

第2个回答  2012-03-21
wozhishiluguo
第3个回答  2012-03-21
这么长。。。
相似回答