C语言将一个字符串的第0,2,4,6,8……位置的字符复制到另一个字符串中,并输出!

如题所述

#include<stdio.h>

#include<string.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;

}

//方法二指针法

#include<stdio.h>

#include<string.h>

intmain()

{

charstr1[]="123456",*p,str2[7];

inti;

p=&str1[5];

for(i=0;i<strlen(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的调用将覆盖掉它们。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-22
#include <stdio.h>
int main()
{
    char str1[100];
    char str2[50];
    char i;
    scanf("%s",str1);
    for(i=0;str1[i]!='\0';i++)
    {
        if(i%2==0)
            str2[i/2]=str1[i];
    }
    if(i%2==0)
        str2[i/2]='\0';
    else
        str2[i/2+1]='\0';
    printf("%s\n", str2);
}

第2个回答  2013-05-22
#include <stdio.h>

void mydup(char *src, char *dst)
{
char *p;
char *q;

p = src;
q = dst;
while(*p) {
*q = *p;
q++;p++;
if (*p == '\0') break;
p++;
}
*q = '\0';
}

int main()
{
char s[100] = "hello world!";
char t[100];
mydup(s, t);
printf("t= %s\n", t);
return 0;
}本回答被网友采纳
第3个回答  2013-05-22
void str2cpy(char *s,char *d)
{
while(*s)

{

*d++=*s++;

if(!*s)

break;

s++;

}
*d=0;

}