| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:求各位大虾帮忙啊 调试出现 内存不能为read
只看楼主 加入收藏
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:8 
求各位大虾帮忙啊 调试出现 内存不能为read
程序代码:
#include <stdio.h>
#include <string.h>
void main()
{
    void tongji(char *x,char *y);
    char str1[128];
    char str2[128];
    printf("输入字符串1:\n");
    scanf("%s",str1);
    printf("输入字符串2:\n");
    scanf("%s",str2);
    tongji(str1,str2);
    printf("\n");
}
void tongji(char *str1,char *str2)
{
    int i,j;
for(i=0;i<=strlen(str1)-1;i++)
    for(j=0;j<=strlen(str2)-1;j++)
    {
        if(str1[i]==str2[j])
        {printf("%s",str1[i]);
break;};
    };
}
注明  :输入字符串1.2后回车  出现“0*0040c4c3”指令引用的“0*00000061”内存。该内存不能为“read”
搜索更多相关主题的帖子: 内存 color 
2012-07-23 20:11
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
收藏
得分:0 
木有人来吗   菜鸟求教啊  
2012-07-23 20:19
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
VC CB调试都没有问题的,我试过了。


咯,看错题了,编译成EXE后,会出现楼主的那种情况。抱歉。

[ 本帖最后由 yuma 于 2012-7-24 07:42 编辑 ]

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2012-07-23 20:22
westfall999
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:40
专家分:101
注 册:2012-7-22
收藏
得分:5 
将printf("%s",str1[i]);改成:printf("%c",str1[i]);试试
2012-07-23 20:26
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:15 


程序代码:
#include
#include
int  main()

 {
     void tongji(char *x,char *y);
     char str1[128];
     char str2[128];
     printf("输入字符串1:\n");
     scanf("%s",str1);
     getchar();                //这里的getchar();清除回车
     printf("输入字符串2:\n");
     scanf("%s",str2);
     tongji(str1,str2);
     printf("\n");
     return 0;

 }

 void tongji(char *str1,char *str2)

 {
     int i,j;

 for(i=0;i<=strlen(str1)-1;i++)
     for(j=0;j<=strlen(str2)-1;j++)
     {
         if(str1[i]==str2[j])
         {
             printf("%c",str1[i]);    //这里不是 %s, str[i]是字符,不是指针
             break;
          }
     }

 } 
2012-07-23 20:30
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
收藏
得分:0 
回复 5楼 回首依依
特别感谢 啊   但是  貌似 不加getchar也可以  通过啊
用getchar释放回车 是什么意思
2012-07-23 20:34
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
回复 6楼 悔悟
不用getchar()也行,是因为你输入的是两个字符数组,你第二个数组的第一个字符中存的是回车;

你试下面的代码;
程序代码:
#include <stdio.h>
int main()
{
    char x,y;
    printf("Input first char:");
    scanf("%c",&x);
    //getchar();       //用于清除你输入第一个字符所按的回车.
    printf("Input second char:");
    scanf("%c",&y);

    printf("The two chars is %c %c",x,y);

    return 0;


2012-07-23 20:47
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
收藏
得分:0 
首先3楼说调试通过,那一定是在win7调试的,XP下不行,问题主要出现在printf()函数,
printf()的原型是int printf( const char *format [, argument]... );
请注意,是const char *format是一个长指针,是指针。
假如有有char s[] = "abc";那么rintf("%s",s)是完全没错的,而printf("%c",s[i]); 中s[i]是一个字符,那么在执行的时候就要访问s[i]所对应的地址,而这个地址恰好是系统的,不能访问,就出现内存不能read了。所以如果要让程序运行,就对s[i]取地址,就是以当前字符地址为起始地址,输出字符串,输出abcbcc(这样程序可以运行,但根据你的程序,这不是你要的结果)。
根据你的程序的功能提示,只要把输出格式改一下就可以了,改成"%c"。
2012-07-23 20:58
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
收藏
得分:0 
回复 7楼 回首依依
就是说如果输入的只是一个字符时第一个回车会影响到后面的字符的输入?

谢谢 大虾啊   
2012-07-23 22:39
快速回复:求各位大虾帮忙啊 调试出现 内存不能为read
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135075 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved