免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6154 | 回复: 28
打印 上一主题 下一主题

关于字符串的赋值和strcpy [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-29 14:51 |只看该作者 |倒序浏览
在看APUE时遇到一个问题,问题如下:

#include     <stdio.h>
#include     <string.h>

static char ctermid_name[L_ctermid];

char *
ctermid(char *str)
{
    if (str == NULL)
        str = ctermid_name;
    return(strcpy(str, "/dev/tty"));    /* strcpy() returns str */
}

在这个函数里,为啥用strcpy给指针赋值,而不直接赋值呢?

[ 本帖最后由 LF_532 于 2006-12-4 21:55 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-11-29 15:23 |只看该作者
请仔细学习c语言教材。

论坛徽章:
0
3 [报告]
发表于 2006-11-29 15:28 |只看该作者
那时数组

论坛徽章:
0
4 [报告]
发表于 2006-11-29 15:36 |只看该作者
那是输入参数,参数内容自己定义

如: char in_buff[128];
       ctermid(in_buff);

论坛徽章:
0
5 [报告]
发表于 2006-11-29 15:38 |只看该作者
哦,我知道了, 是数组。不管str是否为空。也可以从另一个侧面去理解,等到它执行到return(strcpy(str, "/dev/tty"))时,str里一定不是空的,所以只能用strcpy而不能直接赋值。
是我疏忽了。
谢谢lenovo, 谢谢skai!

[ 本帖最后由 LF_532 于 2006-11-30 11:04 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-11-29 17:53 |只看该作者
原帖由 lenovo 于 2006-11-29 15:23 发表
请仔细学习c语言教材。



DDDDDDDDDD

论坛徽章:
0
7 [报告]
发表于 2006-11-29 18:00 |只看该作者
原帖由 lenovo 于 2006-11-29 15:23 发表
请仔细学习c语言教材。


呵呵,一定!

论坛徽章:
0
8 [报告]
发表于 2006-11-29 19:19 |只看该作者
我晕,直接赋值。。。那个可是形参,你赋值后是带不出去的

论坛徽章:
0
9 [报告]
发表于 2006-11-30 09:44 |只看该作者
原帖由 清汤挂面 于 2006-11-29 19:19 发表
我晕,直接赋值。。。那个可是形参,你赋值后是带不出去的



我不知道你所谓的“形参赋值后带不出去”是啥意思。我写了一个程序(地址传递)试了一下可以(也许我没有明白你的意思,望指正)。

#include        <stdio.h>

char *
test(char *str)
{
    str = "hello world";

    return(str);
}

int
main(void)
{
    char        *p;
    printf("%s\n", test(p));
    exit(0);
}
~

[linuxA@LinuxA ]$ cc mm.c
[linuxA@LinuxA ]$ ./a.out
hello world
[linuxA@LinuxA  ]$

[ 本帖最后由 LF_532 于 2006-11-30 09:45 编辑 ]
DaYuTou 该用户已被删除
10 [报告]
发表于 2006-11-30 10:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP