| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1810 人关注过本帖
标题:c语言问题,不明白其中的区别
只看楼主 加入收藏
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
结帖率:100%
收藏
已结贴  问题点数:19 回复次数:14 
c语言问题,不明白其中的区别
哪位大神可以解释一下strcpy(b,a[0])和b=a[0];在运行中的不同吗?(我觉得两个都是赋值)
程序代码:
#include <stdio.h>
#include <string.h>
#define M 3
#define N 20
void fun(char a[M][N], char *b)
{int i;

 strcpy(b,a[0]);

 //b=a[0];
 for(i=1;i<M;i++)
     strcat(b,a[i]);
  


}
main()
{char w[M][N]={"AAAA","BBBBBBB","CC"}, a[100];
   int i ;void NONO ();
   printf("The string:\n");
   for(i=0; i<M; i++)puts(w[i]);
   printf("\n");
   fun(w,a);
   printf("The A string:\n");
   printf("%s",a);printf("\n\n");



[此贴子已经被作者于2017-3-24 11:26编辑过]

搜索更多相关主题的帖子: c语言 
2017-03-24 11:24
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10576
专家分:43058
注 册:2014-5-20
收藏
得分:0 
应该可以,但要注意strcpy()是字符串操作,字符串以'\0'标志结束。
2017-03-24 11:50
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
strcpy(b,a[0])和b=a[0]相同?

先搞清楚你的代码中a[0]是什么再说吧!如果你传递给函数的b是指针,那么前者有错。如果传递给函数的b是数组,那么后者出错。
后者能不能通过编译都是问题,当然这种情况不能过编译是最好的情况。

[此贴子已经被作者于2017-3-24 12:53编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-24 12:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10576
专家分:43058
注 册:2014-5-20
收藏
得分:0 
strcpy(b,a[0])是操作两个不同的存储区域,将a数组复制到b数组。b=a[0]是操作同一个存储区域,b指向a数组。
2017-03-24 14:29
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 3楼 renkejun1942
大神,这个可以编译可以通过,但是结果前边有一串乱码,我知道字符串运算中不能用=号而要用strcpy,我其实是想知道原因
2017-03-24 15:33
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 4楼 吹水佬
大神,用=号结果前边有一串乱码,我知道字符串运算中不能用=号而要用strcpy,我其实是想知道原因是什么,谢谢
2017-03-24 15:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
以下是引用是2014在2017-3-24 15:34:32的发言:

大神,用=号结果前边有一串乱码,我知道字符串运算中不能用=号而要用strcpy,我其实是想知道原因是什么,谢谢

c不支持这种赋值方法。只有初始化时才可。这是游戏规则 没有为什么

DO IT YOURSELF !
2017-03-24 16:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10576
专家分:43058
注 册:2014-5-20
收藏
得分:8 
以下是引用是2014在2017-3-24 15:34:32的发言:

大神,用=号结果前边有一串乱码,我知道字符串运算中不能用=号而要用strcpy,我其实是想知道原因是什么,谢谢

用=号是取得一个地址,不是给字符串赋值,用strcpy就可以向字符串赋值。
字符串用=号赋值可以这样:
#include <stdio.h>
typedef struct _STRING_
{
    char s[256];
} STRING, *PSTRING;

main()     
{     
    STRING s1 = {"ABCDEF\0"};
    STRING s2 = s1;
    printf("%s\n", s2.s);  
}


[此贴子已经被作者于2017-3-24 16:30编辑过]

2017-03-24 16:27
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 7楼 wp231957
好的,谢谢大神
2017-03-24 17:44
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 8楼 吹水佬
如果这样的话b=a[0]是不是也对了,b是一个数组名称,而a[0]也是啊(我是新手,可能问题有点弱智,您见谅啊)


[此贴子已经被作者于2017-3-24 17:48编辑过]

2017-03-24 17:47
快速回复:c语言问题,不明白其中的区别
数据加载中...
 
   



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

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