1. c语言中字符串拼接函数问题
不是说一定不行,也有可能可以。像你这种定义就有可能可以,因为如果s1,s2 在分配内存时就是连续的,那么就是越界了,你这条打印出来也会对,因为他没有越界到别的地方,都是字符串空间,你要同时把s2也打印出来,看看s2有没有被改变。c并不检测越界,只有在动行时有可能会出现执行错误。
2. C语言指针拼接函数问题,求教大神
strcat(p1+2,p2+1)
p1+2,也就是p1向后移动两个字符位置的指针作为一个字符串的起始指针,即字符串为"cd"
p2+1,也就是p2向后移动一个字符位置的指针作为一个字符串的起始指针,即字符串为"BCD"
该函数调用将p1+2作为目的串,p2+1作为源串,将后者连接到前者的后面,则连接后为"cdBCD"。
strcpy(str+2, .....)
该函数调用将 后面的串"cdBCD"复制到前者str+2,即"z"的位置,这是一种覆盖复制。则'z'被'c'覆盖(原来前面的"xy"保留了下来),后面接着放了"cBCD";
最后输出的是str,也就是从str的最开始输出,故结果为"xycdBCD"
3. c语言自定义函数实现字符串的拼接、拷贝、比较大小、求字符串长度等四个功能
#include<stdio.h>
void s_trcat(char *s1,char *s2);//连接两个字符串
void s_trcpy(char *s1,char *s2);//字符串s2复制给字符串s1
int s_trcmp(char *s1,char *s2);//两个字符串比较大小
int s_trlen(char *s);//计算一个字符串的长度
int main()
{
char s1[11]="12345", s2[11]="ABCDE";
char x1[11]="12345",x2[11]="SSSKK";
char str1[11]="ABCD",str2[11]="ACB";
char s[11]="ABCDEF";
int n,len;
s_trcat(s1,s2);//拼接s1,s2
printf("拼接s1,s2,输出s1 ");
puts(s1);
s_trcpy(x1,x2);//将x2的内容复制给x1
printf("将x2的内容复制给x1,输出x1 ");
puts(x1);
n=s_trcmp(str1,str2);//比较str1与str2大小,返回一个整数,代表比较的结果
if(n==0)
printf("str1与str2相同 ");
if(n==1)
printf("str1大于str2 ");
if(n==-1)
printf("str1小于str2 ");
len=s_trlen(s);//计算字符串s的长度,并返回一个整数(字符串长度),
printf("字符串s的长度:%d ",len);
}
void s_trcat(char *s1,char *s2)//连接两个字符串
{
char *p=s1;
char *q=s2;
while(*p)
p++;
while(*q)
{
*p=*q;
p++;
q++;
}
*p='