//方法比较low,但是最终搞定 #include<stdio.h> #include<string.h> static int x=0;y=0; void output(char *t) { int len=strlen(t); if(strlen(t)>3 || strlen(t)<2) return; for(int i=1;i<len;++i) { if(t[i]>'9'||t[i]<'0') return; }
int step=0; if(len==2) step=t[1]-'0'; else if(len==3) step=(t[1]-'0')*10+(t[2]-'0'); switch(*t) { case 'A': x-=step; break; case 'D': x+=step; break; case 'W': y+=step; break; case 'S': y-=step; break; default: return; } } void parse(char * ch) { int len=strlen(ch); //定义游标,定义串头,且指向串头 char *cursor=ch; char *phead=ch; while(cursor<ch+len) { //判断cursor处是否是';' if(cursor[0]==';') { //如果cursor处是';',则将phead之前的cursor-phead个字符传入t //注意t中是不含';'字符; char t[4]={0}; strncpy(t,phead,cursor-phead); //处理t output(t); //串头指向';'的下一个字符 phead=cursor+1; } cursor++; } } int main(void) { //step 1 char ch[10001]; scanf("%s",ch); //step 2 parse(ch); step 3 printf("%d,%d",x,y); return 0; }