stract函数两种写法为什么结果不同,strcpy函数两种写法为什么相同 - 爱问答

(爱问答)

stract函数两种写法为什么结果不同,strcpy函数两种写法为什么相同

//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]=''; //C字串以结束

你相当于写成s[3]="xxx";

那肯定不对了(下标溢出。结果“不可预见”)

一定要注意,字串str2与字符str2[x]是不同的类型,前者可以放一个串,后者只能放一个字符


下一篇:解决问题,过程

上一篇:一列数:1、2、3、4、3、4、5、6、5、6、7、8、9、10...第1994个数是几?

热门标签:
英语 谜语 作文 数学 公式 语文 物理 化学 工艺 java c语言 实验 方程 金属 分子 数据库 硫酸 酒精 运算 石油 vc 世界大战 php 化合物 mysql
最新更新:
电学的一个小问题 为什么打点计时器只能粗略瞬时速度 lookdownupon用法 中专都考不上大学有必要复读一年吗? 如图,已知∠B=∠DEF,AB=DE,请添加一个条件使△ABC≌△DEF,则需添加的条件是__________. 求曲线y=2x^2和直线y=2的所围图形的面积 夜上受降城闻笛是哪句 这个怎么填数字? 小明家下五层楼是5楼,那么小明家上五层楼是几层楼? 填空题,这个题目是怎么算的呢…… 22335577()143中括号里填什么数字。 懂得人帮我看一下这个英文是啥意思??? 最小的物质单位是什么 怎么估算根号52000000 about的重读字母是哪里