
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的调用将覆盖掉它们。
这样:
#include <stdio.h>
#include <string.h>
int main(void)
{ int i;
char string[9]="abcdefg";
for(i=0;i<7;i++,i++)
printf("%c",string[i]);
return 0;
}
扩展资料:
注意事项
c语言如果是字符数组,如:
char str[] = "http://c.biancheng.net";
char *pstr = str; int len = strlen(str), i;
for(i=0; i<len; i++)
{ printf("%c", *(pstr+i)); }
如果是直接使用一个指针指向字符串,例如:
char *str = "http://c.biancheng.net";
或者:
char *str; str = "http://c.biancheng.net";
字符串中的所有字符在内存中是连续排列的,str 指向的是字符串的第 0 个字符;我们通常将第 0 个字符的地址称为字符串的首地址。字符串中每个字符的类型都是char,所以 str 的类型也必须是char *。如:
char *str = "http://c.biancheng.net";
int len = strlen(str), i;
for(i=0; i<len; i++){ printf("%c", *(str+i)); }
void main() { char str1[256],str2[256]; int i,j;
gets(str1);
i=j=0;
while ( str1[i] ) {
if ( i%2==0 ) { str2[j]=str1[i]; j++; }
i++;
}
str2[j]=0;
printf("%s\n",str2);
}
#include "string.h"
char s1[50]={'\0'};
char s2[50]={'\0'};
int i,j=0,len;
strcpy(s1,"My English is very bad");
len=strlen(s1);
for(i=0;i<len;i++)
{
if(i%2==0)
{
s2[j++]=s1[i];
}
}
s2[j]='\0';
printf("s2 = %s",s2);
#include <string.h>
int main(void)
{ int i;
char string[9]="abcdefg";
for(i=0;i<7;i++,i++)
printf("%c",string[i]);
return 0;
}