| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1597 人关注过本帖
标题:C语言一个程序不解,新手求助
只看楼主 加入收藏
micholasmalo
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2012-6-22
收藏
得分:0 
以下是引用月牙弯弯000在2012-9-17 15:28:04的发言:


要求写一个程序,将两个字符串连接在一起,但是不可使用受strcat()函数。
#include
main()
{ char s1[20],s2[20];
  int i,j;
  gets(s1);
  gets(s2);
  i=strlen(s1);
  for(j=0;s2!='\0';j++)
  { s1=s2[j];
    i++;
  }
  puts(s1);
  getch();
}
为什么上面的程序会显示非法使用指针?
求大神赐教!!!!!!!
i=strlen(s1),你的s1[i]就超出数组索引范围了,S2!='\0',这逻辑只在于S2[0]!='\0‘,这些都不看,最大问题,你没有一个足够大的数组如何才能放下2个数组元素的组合。。。
2012-09-21 01:14
micholasmalo
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2012-6-22
收藏
得分:0 
以下是引用micholasmalo在2012-9-21 01:14:52的发言:

i=strlen(s1),你的s1就超出数组索引范围了,S2!='\0',这逻辑只在于S2[0]!='\0‘,这些都不看,最大问题,你没有一个足够大的数组如何才能放下2个数组元素的组
刚才没看仔细,如果你输入的数组元素不超过定义的数组大小,i=strlen(s1)是没问题的,循环改S2[J]!='\N',这程序可以实现,问题是多出来的元素都是一堆乱码,难道PUTS(S1)没给他加‘\N’。。。。。。如头文件跟getch()啥的我就不多说了,打错那么多
2012-09-21 02:11
chengyang123
Rank: 2
等 级:论坛游民
帖 子:11
专家分:40
注 册:2012-9-19
收藏
得分:20 
#include<stdio.h>
#include<string.h>
#include<conio.h>
main()
{
char s1[20],s2[20];
  int i,j,k,t;
  gets(s1);
  gets(s2);
  i=strlen(s1);
  k=strlen(s2);
 for(j=0;j<k;j++)
  {
  s1[i]=s2[j];
    i++;
  }
s1[i]='\0';
puts(s1);
  getch();
  
}
2012-09-21 09:28
Bob2012
Rank: 2
来 自:临潼
等 级:论坛游民
帖 子:16
专家分:23
注 册:2012-8-15
收藏
得分:0 
回复 3楼 senpujituan
写的挺好

艺多不压身 爱你们就想日后驾御你们!
2012-09-21 10:11
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
收藏
得分:0 
#include <stdio.h>
#include<string.h>
void main()
{ char s1[20],s2[20];
  int i,j;
  gets(s1);
  gets(s2);
  i=strlen(s1);
  for(j=0;s2!='\0';j++)
  { s1[i]=s2[j];
    i++;
  }
  s1[i]='\0';
 puts(s1);
}
2012-09-21 12:17
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3451
专家分:19340
注 册:2012-3-31
收藏
得分:0 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-09-21 12:38
月牙弯弯000
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2012-9-16
收藏
得分:0 
回复 13楼 chengyang123
谢了!
2012-09-23 10:36
zcle
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-7-24
收藏
得分:0 
#include <stdio.h>
#include<string.h>
main()
 { char s1[20],s2[20],s3[40];
   int i,j,x,a;
   gets(s1);
   gets(s2);
   j=strlen(s2);
   i=strlen(s1);
   for(x=0;x<i;x++){
         s3[x]=s1[x];
   }
     a=0;
   for(x=i;x<i+j;x++,a++){
       s3[x]=s2[a];
   }
   
   s3[x]='\0';
   
     
   
   puts(s3);
   getchar();
 }
2012-09-24 23:45
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
不使用string里的函数就要注意方法,
先利用循环让第一个数组跑到结尾,也就是不能等于'/0',接着再用一个for循环,把第二个数组的第一个元素放到第一个数组的'/0'位置上后两边同时后移,直到第二个数组全部放进去后在新生成的第一个数组后面加个'/0'就可以了。
2012-09-25 01:00
月牙弯弯000
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2012-9-16
收藏
得分:0 
回复 19楼 小赵q1
谢了!
2012-09-26 14:46
快速回复:C语言一个程序不解,新手求助
数据加载中...
 
   



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

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