| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:请问这个哪里错了
只看楼主 加入收藏
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
结帖率:97.06%
收藏
已结贴  问题点数:20 回复次数:8 
请问这个哪里错了
//我是想让输入字符,然后倒着输出来,而且根据你输入字符的长度分配空间的,不能事先定义好一个足够大的空间;
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    int i = 0;
    char *str;   
    str[i] = (char)malloc(sizeof(char));
    for( str[i] = getch(); str[i] != 13;)
    {   
        printf("%c",str[i]);
        ++i;
        str[i] = (char)malloc(sizeof(char));
        str[i] = getch();
    }   
    printf("%c",str[i]);

    for(i = i-1; i > -1; --i)
    {
        printf("%c",str[i]);
        free(&str[i]);
    }

    return 0;
}

然后出错了,
搜索更多相关主题的帖子: 空间 
2011-01-24 20:29
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
收藏
得分:0 
你的for循环里怎么只有两个啊;应该是这个地方把
2011-01-24 21:04
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    int i = 0;
    char *str;   
    str[i] = (char)malloc(sizeof(char));
    for( str[i] = getchar(); str[i] != '\n';) //字符怎么可以等于13啊
    {   
        printf("%c",str[i]);
        ++i;
        str[i] = (char)malloc(sizeof(char));
        str[i] = getchar();
    }   
    printf("%c",str[i]);

    for(;i > -1;i--)
    {
        printf("%c",str[i]);
        free(&str[i]);
    }

    return 0;
}

   唯实惟新 至诚致志
2011-01-24 21:05
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:4 
怎样觉得malloc()用法不对
  void *malloc(int size);  
 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。

小代码,大智慧
2011-01-24 21:12
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:5 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
    int i = 0;
    char *str;   
    str = (char*)malloc(sizeof(char));
    for( str[i] = getch(); str[i] != 13;)
    {   
        printf("%c",str[i]);
        ++i;
        str++;
        str = (char*)malloc(sizeof(char));
        str[i] = getch();
    }   
    printf("%c",str[i]);
/*
    for(i = i-1; i > -1; --i)
    {
        printf("%c",str[i]);
        free(&str[i]);
    }
*/
    return 0;
}
str[i]是指针用数组下标表示,但是它不是数组。
既然动态分配内存了,--i不是连续的。使用链表能办到输入和释放。

帮人《---》帮己
2011-01-24 21:15
张军强
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-1-24
收藏
得分:0 
int main()
不用int的吧
2011-01-24 21:56
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:8 
LZ代码一看就有问题。一般在对str[i]赋值时就会出错,而且错误提示在linux下估计就是segment fault,windows下估计就是某个内存地址不允许读,不知我猜对了没?
产生这种问题的原因就是LZ对于字符指针和字符数组的区别还是了解不够。
按照题目要求,那么肯定是要通过malloc()。其次,要倒序输出,那么要某种形式来表示顺序。但是,每次分配的内存在逻辑上是没有关系的,所以无法表示字符输入的先后顺序,所以要通过其它方式来表示输入的顺序,这样情况,最简单的方式就是链表。
2011-01-24 23:27
LLCan
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2011-1-20
收藏
得分:3 
不是str[]这样分配的,每次分配,指针指的地址也不同了,而且地址也可能不连续了,其实字符指针可以直接赋值的
2011-01-24 23:45
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
我基础不扎实。。

勤能补拙,熟能生巧!
2011-01-25 09:56
快速回复:请问这个哪里错了
数据加载中...
 
   



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

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