| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 419 人关注过本帖
标题:指针问题,很努力的调试了,好像就不进入函数似地。(自学C)
只看楼主 加入收藏
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
结帖率:57.14%
收藏
 问题点数:0 回复次数:7 
指针问题,很努力的调试了,好像就不进入函数似地。(自学C)
/* 关于字符串的复制问题,让调用函数说的~~ = = */
#include "stdio.h"
#include "stdlib.h"
int n,m;
int main()
{
    void fuzhi(char *s,int n);
    int s;
    char *f,*p;
    printf("你想输入多大长度的字符串");
    scanf("%d",&n);
    f=(char *)malloc(sizeof(char)n);
    p=f;
    printf("请输入你想输出的长度的字符串:");
    scanf("%s",p);
    printf("请输入你想从第几个字符开始复制:");
    scanf("%d",&m);
    s=n-m+1;    /*确定要复制元素的坐标*/
    fuzhi(p,s);
    return 0;
}
void fuzhi(char *s,int k)
{
    char *t;
    t=s;
    for(s=s+k;s<s+n;s++,t++)  /*复制过程*/
         *t=*s;
    *t='\0';
    t=s;
    printf("%s",t);
}

/* 经过编译器调试,可以运行~ 但是。。 还是请各位大神们不要就几个字就完了,说详细点或者别的什么的,真心谢谢了!*/
2011-04-11 19:32
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
收藏
得分:0 

只能人工置顶了
2011-04-11 19:46
变幻小子
Rank: 6Rank: 6
来 自:广东陆丰
等 级:侠之大者
帖 子:188
专家分:473
注 册:2011-3-4
收藏
得分:0 
有什么用的

明天的梦
2011-04-11 19:51
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
收藏
得分:0 
回复 3楼 变幻小子
从第一个字符串复制到第二个指针里
2011-04-11 19:53
thunder_2011
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:100
注 册:2011-4-11
收藏
得分:0 
看了下,错误太多了
1.malloc最后没有free
2.malloc应该多分配一个字节存放 \0
3.复制元素坐标那个语句算的不对。。。
4.子函数中什么都没有做,就定义了一个指针指向原来的堆,这样复制?
5.for循环里退出循环条件用指针判断的不知道对不对
6.for循环退出后,t指针指向了\0,这个时候再printf("%s",t); 输出的就不是预期的了

最后再说一点,f=(char *)malloc(sizeof(char)n);这样写不知道对不对但是最好这样写吧 f=(char *)malloc(sizeof(char)*n);加个乘号,就像sizeof char和sizeof(char)都可以一样,最好还是标准一点,程序看起来舒服。

看这个代码想起了以前刚开始写的时候,void fuzhi。。这函数名咱能不能不这么山寨。。。
2011-04-11 20:50
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
程序代码:

#include "stdio.h"
#include "stdlib.h"

void fuzhi(char *s, int k);

int main()
{
    int n,m;
    char *p;
    printf("你想输入多大长度的字符串");
    scanf("%d",&n);
    printf("%d", n);
    p=(char *)malloc(sizeof(char)*(n+1));//修改
    printf("请输入你想输出的长度的字符串:");
    scanf("%s",p);
    printf("请输入你想从第几个字符开始复制:");
    scanf("%d",&m);
    fuzhi(p,m-1);
    return 0;
}
void fuzhi(char *s,int k)
{
    char *t;
    t=s;
    for(s=s+k; *s!='\0'; s++,t++)  /*复制过程*/
    {
        *t=*s;
        printf("%c", *t);
    }
}



==========================

[ 本帖最后由 thlgood 于 2011-4-11 21:51 编辑 ]

o(∩∩)Linux & Python 群:187367181
2011-04-11 21:45
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
补充一下,函数没有声明!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-04-11 21:59
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
收藏
得分:0 
回复 6楼 thlgood
非常感谢
2011-04-11 23:48
快速回复:指针问题,很努力的调试了,好像就不进入函数似地。(自学C)
数据加载中...
 
   



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

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