#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#defineN100
voidInsert(char*s)
intmain()
{
charstr[N]
printf("Inputastring:")
gets(str)
Insert(str)
printf("Insertresults:%s\n",str)
return0
}
voidInsert(char*s)
{
charstr[N]
char*t=str
strcpy(t,s)
for(*t!='\0's++,t++)
{
*s=*t
s++
*s=''
}
*s='\0'/*在字符串s的末尾添加字符串结束标志*/
}
扩展资料
C语言通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度。
C语言编程定义一个字符串的数组:
str={
“IloveC.”,
“IloveC++.”,
“IloveJAVA.”,
“IlovePython.”,
“IloveLabVIEW.”
}
c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。
如果你用debug方式运行程序,调试环境自动会把你开设的char
a[5]进行初始化0的工作,这时你再将第1位初始化时,后面的0仍存在就好象字符串结尾已经存在了。如果非debug运行则没有这个初始化工作。
如果你用字符方式初始化应当写:char
c[6]={
'h','e','l','l','o','\0'
}
希望对你能有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)