首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 大家帮忙看看这个存续哪里出问题=.=! [无满意答案结帖]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-22 23:47:17 楼主
    #include <iostream>
    #include <string>
    #include "ctype.h"
    #include "stdlib.h"
    using namespace std;
    double comp(char sign,double no1,double no2)
    {
    switch(sign)
    {
    case '+':
    return no1 + no2;
    break;
    case '-':
    return no1 - no2;
    break;
    case '*':
    return no1 * no2;
    break;
    case '/':
    if (no2 != 0)
    return no1 / no2;
    break;
    default:
    return 0;
    }
    return 0;
    }
    int main(){
    char str[255];
    int length;
    int i=0;
    char *str1=NULL;
    char *str2=NULL;
    char *sign1=NULL;
    double numb1,numb2;
    cout < <"this is a math porgram u can input an math " < <endl;
    cin>>str;
    length=strlen(str);
    for (i;i <=length;i++)
    {
    if (isdigit(str[i])==0)
    {
    if(ispunct(str[i])!=1)
    {
    cout < <str[i];
    *str2=*str1;
    str1=NULL;
    strcat(sign1, &str[i]);
    }
    }
    else strcat(str1, &str[i]);
    }
    numb1=atof(str2);
    numb2=atof(str1);
    cout < <comp(*sign1,numb1,numb2);
    }
    说指针错误  =.=!没搞懂 指针哪里错了...
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qqwx_1986
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 23:58:321楼 得分:0
    你什么编译器 我vc6没有报错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • richbirdandy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 23:59:362楼 得分:0
    char *str1=NULL;
    char *str2=NULL;
    char *sign1=NULL;
    一直是空指针
    *str2=*str1;
    这又对空指针取值

    这段程序要干嘛
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 23:59:473楼 得分:0
    vs2008编译不出错

    输入数据运行就出错
    study.exe 中的 0x0079f620 (msvcr90d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
    study.exe 中的 0x0079f620 (msvcr90d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • richbirdandy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:00:014楼 得分:0
    引用 1 楼 qqwx_1986 的回复:
    你什么编译器 我vc6没有报错

    运行了有错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:00:445楼 得分:0
    回2楼没有一直是空指针啊
    不是有strcat(str1, &str[i]);
    这几个啊

    就是个算数而已  =.=!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qqwx_1986
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:05:136楼 得分:0

    引用 2 楼 richbirdandy 的回复:
    char *str1=NULL;
    char *str2=NULL;
    char *sign1=NULL;
    一直是空指针
    *str2=*str1;
    这又对空指针取值

    这段程序要干嘛

    楼主仔细看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:07:017楼 得分:0
    *str2=*str1 把str1的值给str2啊  循环到哪里后面str1要重新赋值的  =.=!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzr4304061988012
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:08:118楼 得分:0
    、原型:extern char *strcat(char *dest,char *src);
           
      用法:#include <string.h>
     
      功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
     
      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
            返回指向dest的指针。

    sign1有足够空间吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • richbirdandy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:09:579楼 得分:0
    引用 5 楼 LotUsLYang 的回复:
    回2楼没有一直是空指针啊
    不是有strcat(str1, &str[i]);
    这几个啊

    就是个算数而已  =.=!

    那一句不是在后面么 先赋的值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:12:1710楼 得分:0
    8楼  要定义大小?

      指针如何定义答谢  =.=!  偶才学......很是茫然  特别是指针
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzr4304061988012
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:14:4411楼 得分:0
    看个例子
    C/C++ code
    #include <stdio.h> #include <string.h> int main() { char d[20]="Golden Global"; char *s=" View"; strcat(d,s); printf("%s",d); return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:24:1812楼 得分:0
    但是你那个给*s赋值了啊......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HelloDan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 00:58:0313楼 得分:0
    strcat(sign1, &str[i]);
    strcat(str1, &str[i]);

    char * strcat ( char * destination, const char * source );



    <cstring>

    Concatenate strings

    Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a new null-character is appended at the end of the new string formed by the concatenation of both in destination.

    Parameters

    destination
        Pointer to the destination array, which should contain a C string, and be large enough to contain the concatenated resulting string.
    source
        C string to be appended. This should not overlap destination.

    Return Value
    destination is returned.

    上面有人说出了问题了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LotUsLYang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 01:01:0014楼 得分:0
    这种格式?char *strcat(*str1, &str[i]);???
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved