| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1651 人关注过本帖
标题:代码是实现 strdup 函数功能的,但是有个错误,写得太渣,求指教
只看楼主 加入收藏
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
结帖率:100%
收藏
 问题点数:0 回复次数:39 
代码是实现 strdup 函数功能的,但是有个错误,写得太渣,求指教
程序代码:
#include <stdio.h>
#include <stdlib.h>
char* _sF(char* s, int len)
{
char* F = (char*)malloc(sizeof(char) * len);
for(int i = 0; i < len; i++)
{
    F[i] = s[i]; 
}
F[len] = '\0';
return F;
}
int main()
{
    char *s="hello";
    char *d;
    d=_sF(s);
    printf("%s",d);
    free(d);
    return 0;
}
2014-08-21 21:25
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:0 
这是错误信息:error C2660: '_sF' : function does not take 1 parameters
我百度了一下,说是函数没有带参什么的,不怎么理解

走向光明的菜鸟学生,励志成为新一代程序猿
2014-08-21 21:26
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:0 
好像解决了,我没有scanf len

走向光明的菜鸟学生,励志成为新一代程序猿
2014-08-21 22:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
error C2660: '_sF' : function does not take 1 parameters
------>这是说 该函数的参数不是1个

DO IT YOURSELF !
2014-08-22 07:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
char* F = (char*)malloc(sizeof(char) * len);
。。。。。。
。。。。。。
return F;   //这里返回局部变量地址  是无意义的行为  也是错误的代码

DO IT YOURSELF !
2014-08-22 07:15
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:0 
回复 5 楼 wp231957
那应该怎能么改

走向光明的菜鸟学生,励志成为新一代程序猿
2014-08-22 09:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
不知道你想实现啥   字符串拷贝 ???

DO IT YOURSELF !
2014-08-22 09:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用wp231957在2014-8-22 07:15:08的发言:

char* F = (char*)malloc(sizeof(char) * len);
。。。。。。
。。。。。。
return F;   //这里返回局部变量地址  是无意义的行为  也是错误的代码


貌似我理解错了  这个malloc分配的空间是从堆上来的  这个有点类似全局变量  是可以被当做指针返回的

DO IT YOURSELF !
2014-08-22 09:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用l3456在2014-8-21 21:26:44的发言:

这是错误信息:error C2660: '_sF' : function does not take 1 parameters
我百度了一下,说是函数没有带参什么的,不怎么理解

听编译器的,不要听人乱说。

授人以渔,不授人以鱼。
2014-08-22 10:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
编译器很清楚地告诉你:函数_sF没有只是1个参数的。因为你前面定义的是char* _sF(char* s, int len),有2个参数,而在后面实际调用的d=_sF(s)只有1个参数,编译器找不到这样的函数的定义代码进行编译。

你不要洋洋洒洒地写了函数的原型和定义体代码之后,在后面说不知道怎么调用,那我就有充分的依据判断这代码不是你自己写的。之所以有时会骂人,就是这种现象,尤其是说了对方还不服气的时候。


[ 本帖最后由 TonyDeng 于 2014-8-22 10:13 编辑 ]

授人以渔,不授人以鱼。
2014-08-22 10:10
快速回复:代码是实现 strdup 函数功能的,但是有个错误,写得太渣,求指教
数据加载中...
 
   



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

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