2_10_2B.C
上传用户:wyn840322
上传日期:2007-01-13
资源大小:294k
文件大小:3k
- /* ======================================== */
- /* 程式实例: 2_10_2b.c */
- /* 字符串和数学运算式的分割 */
- /* ======================================== */
- /* ---------------------------------------- */
- /* 分割字符串或数学运算式 */
- /* ---------------------------------------- */
- int token(char *str1,char *str2,int pos)
- {
- int i,j;
- i = pos; /* 从分割位置开始 */
- while ( str1[i] == ' ' ) /* 跳过空字元 */
- i++;
- if ( str1[i] != ' ' ) /* 不是字符串结束 */
- {
- j = 0; /* 找下一个空白字元 */
- while ( str1[i] != ' ' && str1[i] != ' ' )
- {
- str2[j] = str1[i]; /* 拷贝非空白字元 */
- if ( operator(str1[i]) ) /* 是不是运算子 */
- /* 是否分割字符串是运算子 */
- if ( j > 0 )
- { /* 不是 */
- str2[j] = ' '; /* 传回之前的字符串 */
- return i;
- }
- else
- { /* 是 */
- str2[j+1] = ' '; /* 传回运算子 */
- return i+1;
- }
- i++;
- j++;
- }
- str2[j] = ' '; /* 分割字符串结束字元 */
- return i; /* 传回目前位置 */
- }
- else
- return -1; /* 分割结束 */
- }
- /* ---------------------------------------- */
- /* 分割运算子字符串设定 */
- /* ---------------------------------------- */
- int operator(char op)
- {
- switch ( op )
- {
- case '+':
- case '-':
- case '*':
- case '/':
- case '=':
- case '.': return 1; /* 是运算子 */
- default: return 0; /* 不是运算子 */
- }
- }
- /* ---------------------------------------- */
- /* 主程式 */
- /* ---------------------------------------- */
- void main()
- {
- char string[100]; /* 字符串阵列宣告 */
- char token_string[20]; /* 分割字符串宣告 */
- int pos; /* 分割位置 */
- printf("请输入字符串 ==> ");
- gets(string); /* 读取字符串 */
- pos = 0; /* 设定分割位置初值 */
- printf("分割结果:n");
- /* 分割字符串直到字符串结束 */
- while ( (pos = token(string,token_string,pos)) != -1 )
- printf("%sn",token_string); /* 印出各分割字符串 */
- }