标题:c语言指针程序填空。帮我看看
只看楼主
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
结帖率:60%
已结贴  问题点数:20 回复次数:9 
c语言指针程序填空。帮我看看
#include <stdio.h>
#include<string.h>
void strcpy2(char *s,char *t)
{
    char *p=t;
    while (*s++=*t++);
    s=_____;
    while(_______=*p++);
}

void main()
{
    char str1[100]="abcd",str2[]="efgh";
    strcpy2(str1,str2);
    printf("%s\n",str1);

 程序运行时出现efghefgh ,请问下划线应该填什么?

另外while (*s++=*t++);这个怎么理解?谢谢!
搜索更多相关主题的帖子: c语言 include 下划线 
2011-12-01 23:40
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
得分:0 
作业贴==

何必等待?梦在今朝
2011-12-02 01:02
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
得分:10 
第一个地方:s = s + 1
第二个地方:*s++

while (*s++=*t++);的意思就是当t指向的不是\0时,把t所指向的字符复制到s所指向的地址上去,之后将s,t指针的位置往后挪一位
。。。。

何必等待?梦在今朝
2011-12-02 01:06
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:5 
回复 3楼 zy_space
第一个地方s=s-1;
2011-12-02 11:22
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
得分:0 
回复 4楼 laznrbfe
呃,不好意思。。。。

何必等待?梦在今朝
2011-12-02 11:36
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
得分:0 
回复 3楼 zy_space
第二个地方:*s++
 
while (*s++=*t++);

这个按照你的意思应该是这样?

while (*t)
*s=*t;
s++;
t++;

是这样吗?

2011-12-02 16:03
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
得分:3 
void strcpy2(char *s,char *t)
{
    char *p=s;
    while (*t!='\0')
        {
            *s=*t;
            s++;
            t++;
        }
    *s='\0';
}

2011-12-02 17:04
gtrmao
Rank: 2
等 级:论坛游民
帖 子:38
专家分:32
注 册:2011-10-24
得分:2 
第2个地方*s++;
第一个地方s=s-1;因为“\0”的关系要再退一各
2011-12-02 17:34
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
得分:0 
#include <stdio.h>
 #include<string.h>
 void strcpy2(char *s,char *t)
 {
     char *p=t;
     while (*t!='\0');
     {
         *s=*t;
         t++;
         s++;
     }
     s=s-1;
     while(*s++=*p++);
 }
 
void main()
 {
     char str1[100]="abcd",str2[]="efgh";
     strcpy2(str1,str2);
     printf("%s\n",str1);
}
可是写成这样,运行什么也看不到。好像在一直循环
2011-12-02 21:36
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
得分:0 
知道原因了while (*t!='\0');
 这里多了个分号
2011-12-03 01:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356728-1-1.html




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

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