📄 4-28(2).txt
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char filename[20],ch;
char str[2000]="\0",a[100][2000],b[100][2000],swap[80]="\0";
int c,d[1000],d1=0;
char imp[58][20] = {"abstract","boolean","break","byte","case","catch","char","class",
"const","continue","default","do","double","else","extends","false",
"final","finally","float","for","goto","if","implements","import",
"instanceof","int","interface","long","native","new","null","package",
"private","protected","public","return","short","static","super","switch",
"synchronized","this","throw","throws","transient","true","try","void",
"volatile","while"
};
char fu[45][10] = {"+=","&=","==","?:","--","/=",">>>=",">>>",">>=",">>",">",
">=","++","<<=","<<","<=","<","%=","=",
"*=","^=","!=","|=","&&","||","-=",
"/","-","&","~","|","^","*","!","+"
};
int i,j=0,k=0,sum,flag = 0,rot=0,hang=0;
int m,n,p,q=0;
printf( "Enter filename:" );
scanf( "%s",filename );
if( (fp = fopen(filename,"r"))==NULL )
{
printf("file open error.\n");
exit(0);
}
i=0;
while( (ch = fgetc(fp))!=EOF )
{
str[i++] = ch; //写入数组str[],sum纪录字符个数
putchar(ch);
}
printf("\n");
sum = i-1;
i = 0;
j = 0;
yes: while(i <= sum)
{
if( str[i] ==' ') { i++; continue; }
if( str[i]=='\n'||str[i]==10)
{
for(j = 1;j <= rot;j++)
printf("%d行,%d个位置单词\n",hang,j);
c = hang;
d[d1++] = rot;
i++;
hang++;
rot = 0;
continue;
}
if( str[i]=='"' )
{
j = 0;
a[k][j++] = '"';
i++;
p=i;
for( p;str[p]!='"';p++)
{
a[k][j++] = str[p];
i++;
}
a[k][j] = str[p];
a[k][j+1] ='\0';
strcpy(b[k],"0x109");
i++;
k++;
rot++;
continue;
}
if( str[i]=='\'' )
{
j = 0;
a[k][j++] = '\'';
i++;
p=i;
for( p;str[p]!='\'';p++)
{
a[k][j++] = str[p];
i++;
}
a[k][j] = str[p];
a[k][j+1] ='\0';
strcpy(b[k],"0x106");
i++;
k++;
rot++;
continue;
}
else
{
q = 0;
for(p = i;str[p]!=' '&&str[p]!='\n'&&str[p]!='\0'&&str[p]!='"'&&str[p]!='\'';p++ ) //从空格处划开
{
swap[q++] = str[i++];
flag = 1;
}
}
if( flag == 1) //空格
{
swap[q] = '\0';
for(m = 0;m < 50;m++)
{
if( strcmp(swap,imp[m])==0 ) //找到关键字
{
strcpy( b[k],"0x103" );
strcpy( a[k],swap );
flag = 0;
i++;
k++;
rot++;
goto yes;
}
}
p = 0;
if(swap[p] =='{'||swap[p] =='}') //单个的{ 或者 }
{
a[k][0] = swap[p]; a[k][1] = '\0';
strcpy(b[k],"0x121");
j=0;
p++;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
k++;
rot++;
if( swap[0]=='\0' ) goto yes;
continue;
}
// else if( (swap[p] >=97&&swap[p]<=122)||(swap[p]>=65&&swap[p]<=90)||(str[i]>=48&&str[i]<=57)||swap[p]=='$'||swap[p]=='_')
//{
if((swap[p] >=97&&swap[p]<=122)||(swap[p]>=65&&swap[p]<=90)||swap[p]=='$'||swap[p]=='_')
{
while((swap[p] >=97&&swap[p]<=122)||(swap[p]>=65&&swap[p]<=90)||swap[p]=='$'||swap[p]=='_'||(swap[p]>=48&&swap[p]<=57))
{
a[k][p] = swap[p]; //标志符
p++;
}
a[k][p] = '\0';
if( strcmp(a[k],"true")==0||strcmp(a[k],"false")==0 )
strcpy(b[k],"0x105"); //布尔型
else strcpy( b[k],"0x104");
k++;
rot++;
j=0;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
if( swap[0]=='\0' ) goto yes;
}
while( swap[p]!='\0' )
{
n=0;
for( m = 0; m < 39;m++ ) //找标志符后紧接运算符
{
while( fu[m][n]!='\0')
{
if( swap[p]==fu[m][n] )
{
n++;
p++;
continue;
}
else { p = 0; n = 0;break; }
}
if( fu[m][n]=='\0' )
{
strcpy(a[k],fu[m]);
j=0;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
if (strcmp(a[k],"=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"+=")==0 ) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"-=")==0) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"*=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"/=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"%=")==0 ) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"&=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"^=")==0 ) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"|=")==0 ) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],">>=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"<<=")==0 ) { strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],">>>=")==0 ) {strcpy(b[k],"0x110"); k++; rot++;}
else if (strcmp(a[k],"?:")==0 ) {strcpy(b[k],"0x111"); k++; rot++;}
else if (strcmp(a[k],"||")==0 ) {strcpy(b[k],"0x112"); k++; rot++;}
else if (strcmp(a[k],"&&")==0 ) {strcpy(b[k],"0x113"); k++; rot++;}
else if (strcmp(a[k],"|")==0 ) {strcpy(b[k],"0x114"); k++; rot++;}
else if (strcmp(a[k],"^")==0 ) {strcpy(b[k],"0x115"); k++; rot++;}
else if (strcmp(a[k],"&")==0 ) {strcpy(b[k],"0x116"); k++; rot++;}
else if (strcmp(a[k],"==")==0||strcmp(a[k],"!=")==0 ) { strcpy(b[k],"0x117"); k++; rot++;}
else if (strcmp(a[k],"<")==0||strcmp(a[k],">")==0||strcmp(a[k],"<=")==0||strcmp(a[k],">=")==0 ) {strcpy(b[k],"0x118"); k++; rot++;}
else if (strcmp(a[k],"<<")==0||strcmp(a[k],">>")==0||strcmp(a[k],">>>")==0 ) { strcpy(b[k],"0x119"); k++; rot++;}
else if (strcmp(a[k],"+")==0||strcmp(a[k],"-")==0 ) {strcpy(b[k],"0x11a"); k++; rot++;}
else if (strcmp(a[k],"*")==0||strcmp(a[k],"/")==0||strcmp(a[k],"%")==0 ) {strcpy(b[k],"0x11b"); k++; rot++;}
else if (strcmp(a[k],"++")==0||strcmp(a[k],"--")==0||strcmp(a[k],"!")==0||strcmp(a[k],"~")==0 ) {strcpy(b[k],"0x11c"); k++; rot++;}
if(swap[0]=='\0') goto yes;
break;
}
}
if(swap[p] =='('||swap[p] ==')'||swap[p] =='['||swap[p] ==']'||swap[p] =='.')
{
a[k][0] = swap[p]; a[k][1] = '\0';
strcpy(b[k],"0x11d");
j=0;
p++;
while(swap[p]!='\0') swap[j++] = swap[p++];
swap[j] = '\0';
p = 0;
k++;
rot++;
if( swap[0]=='\0' ) goto yes;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -