找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 243|回复: 1

下标归0问题

[复制链接]

1

主题

12

回帖

0

积分

新手上路

积分
0
发表于 2013-10-22 13:48:26 | 显示全部楼层 |阅读模式
郁金仙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=&sc;
//功能
int n[222];//存放数字
int i,j,k;
char stemp[222]={0};//存放字符数字
//3
char s[222];//存放+,-,*,/
//读取表达式字串存放sc[222]数组里
    while(1)
{
     *ps=getchar();
if (*ps==&#39;\n&#39;)
{
break;
}
ps++;

}
//测试打印表达式
printf("%s \n",sc);

//分离出数字和运算符分别保存int n[222],char s[222]
//--------------------------------------//分离数字
//指针ps指向表达头部ps=&sc;
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]=&#39;\0&#39;;///////////////这样标示字符串结束.碰着运算符结束了.哪运算符后面的数字怎么办           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");

1793

主题

457

回帖

0

积分

管理员

积分
0
发表于 2013-10-22 14:04:42 | 显示全部楼层
我大概猜测一下吧

遇到结束时就结束了呗,后面的数字这次就不算了。
如果J归0了,他是有范围的,也就是属于局部变量,在同一个子CALL中,走出这个CALL后J就不存在了,重新调用就再会再来。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 13:48 , Processed in 0.088379 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表