|
|
郁金仙C语言中第39,从字符串中提取数字.有一点严重不理解.由于是盗版的,所以只好在这问了..
从表达式提取数字
1、先从键盘获取 表达式字串 char sc[256];
2、从表达式提取数字,存放int n[222];
3、从表达式提取运算符,存放到 char s[222];
4、计算出值,打印出来
一、构思
遍历sc字符数组 遇到+,-,*,/便保存到 s[222]数组里
二、代码设计
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char sc[222]={0};
char *ps=≻
//功能
int n[222];//存放数字
int i,j,k;
char stemp[222]={0};//存放字符数字
//3
char s[222];//存放+,-,*,/
//读取表达式字串存放sc[222]数组里
while(1)
{
*ps=getchar();
if (*ps=='\n')
{
break;
}
ps++;
}
//测试打印表达式
printf("%s \n",sc);
//分离出数字和运算符分别保存int n[222],char s[222]
//--------------------------------------//分离数字
//指针ps指向表达头部ps=≻
j=0;k=0;
for(i=0;i<=strlen(&sc);i++){ //"888+333*777"
if (isalnum(*ps))
{ stemp[j]=*ps;
j++;}else
{//如果+,-,*,/,\0
stemp[j]='\0';///////////////这样标示字符串结束.碰着运算符结束了.哪运算符后面的数字怎么办 n[k]=atoi(&stemp);
k++; j=0; //下标归零/////////////////////////////如果归0了,哪下次执行for的时候stemp[j]为什么不等于stemp[0]
}ps++;//指向sc数的下一字符
} //测试一下n[222]
for (i=0;i<k-1;i++)
{printf("%d ",n[i]);
}printf("\n");
|
|