我正在使用Dev C ++进行编程。
我会尝试给出问题的基本概要......
我正在尝试编写一个程序,该程序将读取文件中的时间戳和温度读数,然后将时间戳设置为特定格式,并在需要时将温度转换为摄氏温度。输入文件在文件顶部有一个标记号,用于说明需要读取多少行数据。在这个单个int之后,每行然后包含一个数字(即200103121915 F51.13),日期和temp之间有一个空格。格式为YYYYMMDDHHMM。在不使用指针或任何面向对象的编程的情况下,我们应该将每个条目转换为MM / DD / YYYY HHMM格式,如果温度以华氏度给出,则需要将其转换为摄氏度。
我遇到的每一种方法都遇到了问题。首先,我只是将整个12位数作为int读取,然后使用一些模数命令来分离每个部分。但是,我发现int不会持有那么大的数字。接下来,我想将每个数字读入一个数组,然后将各个数组拼凑成正确的格式。我不知道如何一次读一位数。我认为数组需要和int类型,但那我将如何处理F或C标签?基本上我只是在寻找一些关于如何完成这项任务的基本想法,而不是要求某人编写代码。
答案 0 :(得分:1)
使用老式的stdio.h函数会更容易。
fscanf(stream, "%4d%2d%2d%2d%2d %c%f", &year, &month, &mday, &hour, &minute, &unit, &temp);
如果你真的真的不能使用指针,那么
year = 1000 * (fgetc(stream) - '0');
year += 100 * (fgetc(stream) - '0');
year += 10 * (fgetc(stream) - '0');
year += (fgetc(stream) - '0');
month = 10 * (fgetc(stream) - '0');
month+= (fgetc(stream) - '0');
依旧......
答案 1 :(得分:0)
如果您刚刚开始使用C ++中的I / O,您可能会为参考站点添加书签,因为该库提供了许多选项和功能。
作为进一步的指针,std::setw
操纵器可能有助于提取给定数量的字符 - 尽管它不会阻止数字提取过于贪婪。