如何从文本文件中读取类似“ 10:55”的时间,以便我们可以用C编程语言对其进行计算?

问题描述 投票:0回答:1

我正在尝试从文本文件中读取类似数据的时间(即10:55),并以可以对其进行计算的方式进行分配。例如,如果我想将10:55的10小时55分钟隐藏成几分钟:10 * 60 + 55 = 655。但是10:55包含':',因此我不能直接将其分配给整数。到目前为止,我已经能够使用atoi(char * ptr)函数解决此问题,该函数将字符串中的数字转换为整数类型数据。代码运行得很好,但我不确定该函数如何工作。因为字符串“ 10:55”包含非数字值,所以在检测到“:”时不应该立即返回垃圾值。但是在我的情况下,它返回10,然后在将指针移动3位后给出55 。因此,如果有人详细说明此功能的确切工作方式将非常有帮助。

最后还有其他方法可以解决此问题,而无需使用atoi()函数,而仅使用基本的C编程技术。如果是,请与我分享您的代码和说明。非常感谢您的帮助。这是我的代码:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    int hh,mm;
    char startingtime[6];
    int strtimearr[2];

    FILE *start=fopen("start.txt","w");
    if(start==NULL)
    {
        printf("FILE DOES NOT EXIST");


    }

    printf("START TIME\n");
    printf("->HOUR(hh):");
    scanf("%d",&hh);
    printf("->MINUTE(mm):");
    scanf("%d",&mm);

    fprintf(start,"%d:%d",hh,mm);
    fclose(start);

    start = fopen("start.txt", "r");

    if(start==NULL)
    {
        printf("FILE DOES NOT EXIST");


    }
    fscanf(start, "%s", startingtime);
    fclose(start);

    //puts(startingtime);

    char *s1= startingtime;


    strtimearr[0] = atoi(s1);
    strtimearr[1] = atoi(s1+3);



    printf("Time : %d:%d \nconverted to minute : %d",strtimearr[0],strtimearr[1],(strtimearr[0]*60+strtimearr[1]));


}
c function file text atoi
1个回答
0
投票

您也可以使用fscanf直接从文件中读取整数值,而不是读取字符串并将其转换为int:

fscanf(start,"%d:%d", &strtimearr[0], &strtimearr[1]);
© www.soinside.com 2019 - 2024. All rights reserved.