gpt4 book ai didi

c - 从文件中读取日期时 atoi 行为异常

转载 作者:行者123 更新时间:2023-11-30 18:42:03 25 4
gpt4 key购买 nike

从昨天晚上开始,我就一直在努力解决atoi函数的这个问题,但没有逃脱。我创建了一个程序,其中有两个功能:1-查找编号。操作系统更新后的天数。 2-找到编号。防病毒软件更新后的天数。现在,经过多次循环,我找到了 mm/dd/yy 格式的两个日期,并将其写入文件中。目前,我仅处理防病毒日期(将十六进制值转换为十进制后得到的日期)并将其存储在新文件中。例如,将日期设置为:07/17/2013。文件中仅写入此日期。文件中的十六进制数据(通过十六进制工作室打开文件后)为:

    HEX VALUE --------------------------DECIMAL VALUE
37 2F 31 37 2F 32 30 31 33 0D 0A --- 7/17/2013..

现在我运行 3 个循环,以便在单独的 char 变量中获得 7, 17, 2013。但是当我使用 atoi 将它们转换为十进制时,7 和 17 变成 0,但 2013 年仍然是 2013 年。我已经完成了 90% 项目的其余部分,并坚持在最后一 block 。 文件的字符编码无法更改,因为我必须在域计算机上实现整个程序,并且我没有找到任何使用 UTF 的方法。将单独的日、月、年转换为整数值后,我必须找到日期的 toatl 值并将其与当前日期进行比较并找出差异。所以,请提供一些解决方案。

int main(void)
{
FILE *fp_av_dt;
int ch_av,n=0,n1=0,n2=0,i=0,iday1=0,imon1=0,iyr1=0;
int mon_val1=0,arr_days_values_av=0;
char dt_av[11],amon1[3],aday1[3],ayr1[5];

fp_av_dt=fopen("c:\\windows\\web\\wallpaper\\av_dt.txt","r");

while((ch_av=fgetc(fp_av_dt))!='\n')
{
if(isalnum(ch_av) | ch_av=='/' | ch_av=='\n')
/* leave any other char other than '/','\n' or any digit */
{
dt_av[n]=ch_av;
//printf("%c",dt_av[n]);
//store chars in dt_av array
n++;
}
}

printf("\n");

for(n=0;dt_av[n]!='/';n++) /* Loop & wait till '/' comes */
{
amon1[i]=dt_av[n]; /* store elements in month's array */
//printf("%c",amon1[i]);
i++;
}

i=0;

for(n1=(n+1);dt_av[n1]!='/';n1++) /*Loop & wait till next '/' comes */
{
aday1[i]=dt_av[n1]; store elements in day's array */
//printf("%c",aday1[i]);
i++;
}

i=0;

for(n2=(n1+1);dt_av[n2]!='\n';n2++)
{
ayr1[i]=dt_av[n2]; store elements in year's array */
//printf("%c",ayr1[i]);
i++;
}

i=0;

iday1=atoi(aday1); /* convert array to integer */
printf("%d\n",iday1);

imon1=atoi(amon1);
printf("%d\n",imon1);

iyr1=atoi(ayr1);
printf("%d\n",iyr1);

system("PAUSE");
} /* Uncomment printf lines to see the value of any variable */

现在是 sleep 时间了。所以10小时后就会上线。谢谢...

最佳答案

尝试将 for 循环替换为

fscanf(fp_av_dt, "%d/%d/%d", &iday1, &imon1, &iyr1);

返回值应为 3,表示已读取 3 个值。

参见scanf(3)

关于c - 从文件中读取日期时 atoi 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561398/

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