C语言中怎样将一个字符串的第0,2,4,6,8??位置的字符复制到另一个字符串中并输出,求程序
#includestdio.h
#includestring.h
intmain()
{
charstr1[]=”123456″,str2[7];
inti,j=0,len;
len=strlen(str1);
for(i=len-1;i=0;i–)
{
str2[j++]=str1[i];
}
str2[6]=’\0′;
printf(“%s”,str2);
return0;
}
//方法二指针法
#includestdio.h
#includestring.h
intmain()
{
charstr1[]=”123456″,*p,str2[7];
inti;
p=str1[5];
for(i=0;istrlen(str1);i++)
{
str2[i]=*p–;
}
str2[strlen(str1)]=’\0′;
printf(“%s”,str2);
return0;
}
扩展资料
C语言高效复制连接字符串
源字符串的长度未知且目标字符串大小固定时,遵循一些流行的安全编码准则来将连接结果限制为目标区大小实际上会导致两个冗余的传递。例如,按照CERT关于安全使用strncpy和strncat的建议,并且目标区的大小是dsize字节,我们可能会得到以下代码。
与对strncat的调用不同,当s1的长度大于d的大小时,上面对strncpy的调用不会将NUL(‘\0’)结束符追加到d上。它是一个常见的想当然的错误。此外,当s1短于dsize-1时,strncpy函数将所有剩余的字符填满为NUL(‘\0’),这也被视为一种浪费的,因为随后对strncat的调用将覆盖掉它们。
c语言编程:字符串拷贝(程序改错)
不知道你这是做的题目还是练习什么的?这题有很大的问题。
1字符串数组大小的问题,然后因为这个导致后面函数strcpy和后面的字写函数都有问题。哪怕代码改的可以正常运行,以后肯定还是会有指针溢出
#include stdio.h
#include string.h
#define BUF_SIZE 10
#define setString for (i=0;iBUF_SIZE;i++) string1[i]=i
#define showString printf(“[%s]\n”,string1)
void strCpy1(char* t,const char *f);
void strCpy2(char* t,const char *f);
void strCpy3(char* t,const char *f);
int main() {
int i;
char string[BUF_SIZE]=”123456789″;
char string1[BUF_SIZE];
setString;
strcpy(string1,string);
showString;
setString;
strncpy(string1,string,strlen(string)+1);//change (1)
showString;
setString;
strCpy1(string1,string);
showString;
setString;
strCpy2(string1,string);
showString;
setString;
strCpy3(string1,string);
showString;
return 0;
}
void strCpy1(char* t,const char *f) {
for (unsigned i=0;istrlen(f)+1;i++)//change (2)
t[i]=f[i];
}
void strCpy2(char* t,const char *f) {
while ((*t++=*f++)!=’\0′);//change3
}
void strCpy3(char* t,const char *f) {
while ((*t++=*f++)!=’\0′); //change 4
}
C语言问题:将字符串a复制到字符串b中
将字符串a复制到字符串b中,简单的方法是使用strcpy函数;
头文件:#include
定义函数:char
*strcpy(char
*dest,
const
char
*src);
函数说明:strcpy()会将参数src
字符串拷贝至参数dest
所指的地址。
返回值:返回参数dest
的字符串起始地址。
附加说明:如果参数
dest
所指的内存空间不够大,可能会造成缓冲溢出(buffer
Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。
范例
#include
#include
void
main()
{
char
a[30]
=
“first
string(1)”;
char
b[]
=
“another
string(2)”;
printf(“before
strcpy()
:%s\n”,
a);
printf(“after
strcpy()
:%s\n”,
strcpy(a,
b));
}
也可以使用循环来复制:
#include
void
main()
{
int
i;
char
a[30]
=
“first
string(1)”;
char
b[]
=
“another
string(2)”;
printf(“before
:
%s\n”,
a);
for(i=0;b[i];i++)a[i]=b[i];
//复制除’\0’以外的每一个字符
a[i]=’\0′;
//置串尾标记’\0′
printf(“after
:
%s\n”,
a);
}
C语言中字符串的复制
要先加入
头文件
#include
里面的有个函数可以直接复制字符串
例如:
strcpy(str2,str1)
;
把str1中的字符复制到str2中。
c语言把一个字符串复制到另一个字符串
用char指针复制字符串用while循环:
#includestdio.h
int main()
{ char s[300],s1[300],*p=s,*q=s1;
gets(s);
while(*q++=*p++);
puts(s1);
return 0;
}
=================
用库函数:
#includestdio.h
#includestring.h
int main()
{ char s[300],s1[300];
gets(s);
strcpy(s1,s);
puts(s1);
return 0;
}