gpt4 book ai didi

C中的字符一一复制就是复制整个字符串

转载 作者:行者123 更新时间:2023-11-30 15:07:38 24 4
gpt4 key购买 nike

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

{
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);
}

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

此问题的原因及解决方法是什么?

最佳答案

请小心一些事情。第一个,正如乔纳森所说,不要使用 gets 而不是使用 scanf()。第二个是你必须始终声明变量并在声明时为其分配适当的值(我的想法)。最后一个,char 数组必须在数组末尾有 Null 终止符或 '\0' 以表明该位置是字符串的末尾。您始终应该为 null 多保留一个位置以终止。

空符号 = '\0'

例如,对于年份,您应该这样声明:
charyear[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();
}

关于C中的字符一一复制就是复制整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com