一个简单的问题菜鸟免进
#include <stdio.h>
#define _space(p) (*p==' ')
#define syntax(p) (*p==','||*p=='.'||*p=='\\'||*p==':'||*p==';' \
||*p=='"'||*p=='|'||*p=='('||*p==')'||*p=='?' \
||*p=='['||*p==']'||*p=='{'||*p=='}'||*p=='+' \
||*p=='-'||*p=='_'||*p=='*'||*p=='/'||*p=='>' \
||*p=='#'||*p=='@'||*p=='$'||*p=='&'||*p=='!' \
||*p=='`'||*p=='%'||*p=='^'||*p=='*'||*p=='|' \
)
char st[100][32];
int digit(char *p)
{
if(*p>='0'&&*p<='9')
return 1;
else
return 0;
}
int letter(char *p)
{
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
return 1;
else
return 0;
}
void ParseLine(char *p)
{
char *ss=NULL;
char *pp=p;
int i=0;
ss=pp;
while(*pp!='\0')
{
Space:
{
if(_space(pp))
pp++;
ss=pp;
}
Syntax:
{
if(syntax(pp))
pp++;
ss=pp;
}
if(*pp==' ')
goto Space;
if(syntax(pp))
goto Syntax;
while(letter(pp)||digit(pp))
pp++;
strncpy(st[i++],ss,pp-ss);
}
}
main()
{
char text[512];
FILE *fp;
int j;
if((fp=fopen("t.txt","rt"))==NULL)
{
printf("Can Not Open File \n");
exit(1);
}
fgets(text,512,fp);
fclose(fp);
ParseLine(text);
printf("\n");
for(j=0;j<20;j++)
printf("%s\n",st[j]);
}
t.txt的内容
&*ryyu web * () 789uy 234bt
编译通过运行出问题