更新时间2019-03-10 22:02:23
//strcat
#include<stdio.h>
#include<string.h>
int main(void){
char str2[20]="jkl";
strcat(str2,"p");
puts(str2);
return 0;
}
------------------------------
#include<stdio.h>
#include<string.h>
int main(void){
char str2[20];
str2[20]="jkl";
strcat(str2,"p");
puts(str2);
return 0;
}
----------------------------------
-----------------------------------
//strcpy
#include<stdio.h>
#include<string.h>
int main(void){
char str2[20]="jkl";
strcpy(str2,"p");
puts(str2);
return 0;
}
-------------------------------
#include<stdio.h>
#include<string.h>
int main(void){
char str2[20];
str2[20]="jkl";
strcpy(str2,"p");
puts(str2);
return 0;
}
你的每个程序的第二个都有3个错(基本的概念)
1.c语言的字串只能用=初始化,不能直接用=赋值的
2.字符串与字符是两个不同的概念
3.数组下标从0开始,最大下标只能用定义的n-1
char str2[20]="jkl"; //正确,它是初始化
str2[20]="jkl"; //错(当然,语法上可能只是一个警告,但逻辑上大错了)
你的原意是与初始化一样,给str2串赋值,但违反了第1条,C的字串是不能直接用=赋值的
而实际上str2[20]表示了str2串的第20个成员,而它已是下标溢出了(第3条),因为str2只能用到str2[0]~str2[19],且str[20]它只是一个字符变量,只能放下一个字符(第2条)
如
char s[3];
s[0]='1';
s[1]='2';
s[3]='