gpt4 book ai didi

c - 我的代码有什么问题吗? C语言

转载 作者:行者123 更新时间:2023-11-30 21:29:06 25 4
gpt4 key购买 nike

我的代码有什么问题吗?第一行是正确的 input.txt但第二个坏了,我不知道为什么date花费一行。为什么元素packmethod选择日期?

我的代码:

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

int main(int argc, const char * argv[]) {

FILE *fr;
char date[11];
char pack[3], method[4];

fr = fopen("input.txt","r");

if(fr == NULL)
printf("File not found\n");

while(!feof(fr)) {
fgets(date,11,fr);
fgets(pack, 3, fr);
fgets(method, 4, fr);
printf("%s %s %s",date,pack,method);
}

fclose(fr);
return 0;
}

我的输入.txt:

2015-05-01 A GG
2015-05-02 H GG
2015-05-03 H AA
2015-05-05 G SS
2015-05-06 D GG
2015-05-17 V GG
2015-05-24 AAAAA
2015-05-29 V GG
2015-06-01 V GG

也许有人知道如何从文件中读取日期格式(不像我的代码中的那样),以及如何检查它是否是下个月?

最佳答案

您的代码中存在多个错误,例如字符串太短、使用 feof() 并尝试在同一内容上多次使用 fgets()文件中的文本行。虽然可能,但它不是很干净,因此我在读取整个文本行后使用了 strtok()

在这个重写的代码中,我还检测到月份何时发生变化。我使用了指向行内数据的指针。请注意,如果要将提取的数据存储到数组中,则必须创建这样的数组并复制数据,因为数据会在每一行上被覆盖。

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

int main(int argc, const char * argv[])
{
FILE *fr;
char line[42];
char *date, *pack, *method;
int year, month, day, lastmonth = -1;

if((fr = fopen("input.txt","r")) == NULL)
exit(1);

while(fgets(line, sizeof line, fr) != NULL) { // instead of feof()

pack = method = NULL; // preset to test later
date = strtok(line, " \r\n\t"); // strip newline too
if(date && strlen(date) == 10) { // check valid substring
year = atoi(date);
month = atoi(date+5);
day = atoi(date+8);
printf("%04d-%02d-%02d", year, month, day);
pack = strtok(NULL, " \r\n\t");
if(pack) { // was substring extracted?
method = strtok(NULL, " \r\n\t");
}
if (pack && method) { // were substrings extracted?
printf(" %s %s", pack, method);
if (month != lastmonth && lastmonth >= 0)
printf(" *New month*");
}
else {
printf(" *Ignored*");
}
lastmonth = month;
printf("\n");
}
else {
printf("*Invalid line*\n");
}
}

fclose(fr);
return 0;
}

程序输出:

2015-05-01 A GG
2015-05-02 H GG
2015-05-03 H AA
2015-05-05 G SS
2015-05-06 D GG
2015-05-17 V GG
2015-05-24 *Ignored*
2015-05-29 V GG
2015-06-01 V GG *New month*

关于c - 我的代码有什么问题吗? C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472119/

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