小问题一个,字符的处理
如果我有一列数
1,2,3,4,5,6;10
如果我想表示
第一个数+第二个数=最后那个数
我是不是可以写
char buf[128];
int i=0;
buf[1]+buf[2]=buf[&';'+1]/*第一位的数字+第二位的=分号的位置+1的数字*/
如果这样表示可以的话(可能我写的大错特错),10是个两位数的数字,怎么读取呢。
不知道我的表述是否明白
[解决办法]
#include <stdio.h>#define MAXN 100char s[] = "1,2,3,4,5,6;10";int buf[MAXN];char *p;int v,n,k,L,i,last;void main() { p=s; L=0; i=0; while (1) { k=sscanf(p,"%d%n",&v,&n); if (1==k) { if (0==L) { buf[i]=v; } else {//1==L last=v; break; } p+=n; if (';'==p[0]) L=1; i++; if (MAXN<=i) { printf("Too many numbers (>%d) !\n",MAXN); return; } } else if (0==k) { p++; } else {//-1==k break; } } n=i; for (i=0;i<n;i++) printf("buf[%d]=%d\n",i,buf[i]); printf("last=%d\n",last);}//buf[0]=1//buf[1]=2//buf[2]=3//buf[3]=4//buf[4]=5//buf[5]=6//last=10