在C中逐个复制字符是复制整个字符串

时间:2016-06-28 00:02:16

标签: c arrays string copy

我想将一个字符数组中的最后四个字符复制到另一个数组中。我尝试过这样做,如下所示。

{
char date[20],day[2],year[4];
int n,i,j;
gets(date);
n=strlen(date);
j=n-1;
        for(i=3;i>=0;i--)
        {
            year[i]=date[j];
            j--;
        }
printf("%s",year);
}

但是当我复制它时,即使第二个数组很小,它也会复制整个字符串以及四个字符。 例如,如果输入为16 july 1776 输出为year=177616 july 1776

这是什么原因和解决方案?

1 个答案:

答案 0 :(得分:1)

请小心一些事情。第一个,因为乔纳森说不要使用获取而不是使用scanf()。第二个是你必须总是在声明时声明变量并为它指定一个合适的值(我的想法)。最后一个,char数组必须在数组末尾有Null终结符或'\ 0'才能显示这个地方是你字符串的结尾。总是你应该多留一个地方作为空的终止。

空标志='\ 0'

例如,对于年份,您应该声明如下:
    char year [5]; //年份为4位数,终止为1位('\ 0')

这是您编辑和工作的代码。

#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>

int main()
{

char date[11],day[3],year[5];
scanf("%s",date);
int n=strlen(date);
int j=n-1;
year[4]='\0';
for(int i=3;i>=0;i--)
{
    year[i]=date[j];
    j--;
}
printf("%s",year);
getch();
}