C 为什么程序每次都给出相同的输出?

C 为什么程序每次都给出相同的输出?,c,structure,C,Structure,该程序以结构的形式输入员工的各种数据。然后程序应向用户询问当前日期。如果两个年份之间的差异超过3年,程序应打印该员工的详细信息。我为同样的问题编写了以下代码。以字符串的形式输入日期,然后将年份字符转换为相应的整数。请在相应的代码中查找错误。程序的运行时间如下所示 运行时- For how many employees you want to enter the data for? 2 Enter the code, name and date of joining(Format is dd/mm

该程序以结构的形式输入员工的各种数据。然后程序应向用户询问当前日期。如果两个年份之间的差异超过3年,程序应打印该员工的详细信息。我为同样的问题编写了以下代码。以字符串的形式输入日期,然后将年份字符转换为相应的整数。请在相应的代码中查找错误。程序的运行时间如下所示

运行时-

For how many employees you want to enter the data for?
2
Enter the code, name and date of joining(Format is dd/mm/yyyy).
04 sukrit 02/09/1998
Enter the code, name and date of joining(Format is dd/mm/yyyy).
05 harish 02/05/2018
please enter the current date.(dd/mm/yyyy)
23/07/2019
4 sukrit 02/09/19985 harish 02/05/2018
程序-

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void linkfloat();
struct employee
{
    int code; char name[10]; char date[10];
}n[20];
int main()
{
    int x,i,dh,y1,y2,diff;
    printf("For how many employees you want to enter the data for?\n");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        printf("Enter the code, name and date of joining(Format is dd/mm/yyyy).\n");
        scanf("%d %s %s",&n[i].code,n[i].name,n[i].date);
        while((dh=getchar())!='\n')
            ;
    }
    char cdate[10];
    printf("please enter the current date.(dd/mm/yyyy)\n");
    scanf("%s",cdate);
    //converting character to integer
    //date1
    for(i=0;i<x;i++)
    {
        y1 = (n[i].date[6]-48)*1000+(n[i].date[7]-48)*100+(n[i].date[8]-48)*10+(n[i].date[9]-48);
        y2 = (cdate[6]-48)*1000+(cdate[7]-48)*100+(cdate[8]-48)*10+(cdate[9]-48);
        printf("%d %d\n",y1,y2);
        diff = abs(y2-y1);
        if(diff>=3)
        {
            printf("%d %s %s\n",n[i].code,n[i].name,n[i].date);
        }
    }
    return 0;
}

void linkfloat()
{
    float a=0,*n;
    n  = &a;
    a = *n;
}
除空终止外,最多可容纳9个字符。但是您正在输入10个字符,没有\0个字符的空间

因此,printf将继续打印,直到找到\0并调用未定义的行为

将大小更改为

char date[11];


linkfloat的意图是什么?@Bathsheba将浮点格式链接起来,以避免该错误。但是a和b都是自动变量;该函数是不可操作的。您有一些内存错误。您的日期字符串有10个字符加上一个终止的空字符,因此至少需要11个字符,但您只为10个字符分配了空间。我在代码中没有看到任何检查来捕获不合适的字符串。首先解决这个问题。浮点格式的链接应该是什么意思?格式是如何链接的?
02/09/1998
char date[11];
char cdate[11];