我想将一个字符数组中的最后四个字符复制到另一个数组中。我尝试过这样做,如下所示。
{
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
这是什么原因和解决方案?
答案 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();
}