c - 在 C 中不打印任何内容
问题描述
我正在开发一个可以存储您需要执行的任务的 C 程序。现在,我正在尝试创建一个分组系统,将您需要执行的任务分组。
程序读取“input.txt”文件。你必须先写下你想输入多少个任务,然后下一行就是这种格式。{ YYYYMMDD HHMM (Importance 1~10) (Group 0~4) (Title) (SubTitle) }. 例如像这样:20181101 0530 5 1 计算机编码。
但问题是现在我需要以这种格式列出每个组中有多少任务。{ (group0 中的任务) (group1) (group2) (group3) (group4) }。因此,当group0 中有4 个任务,第 2组中有 2个任务,第 4 组中有 1 个任务时,它会打印出“ 4 0 2 0 1 ”。
我正在处理的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Tasks{
int date;
int time;
int i;
int group;
char title[127];
char sub[127];
};
struct Groups{
int gr0;
int gr1;
int gr2;
int gr3;
int gr4;
};
int main(){
FILE *file;
int num;
int j;
struct Tasks task[num];
struct Groups group;
file = fopen("input.txt", "r+");
fscanf(file, "%d", &num);
rewind(file);
for(j=0;j<num;j++){
fscanf(file, "%d %d %d %d %s %s\n",
&task[j].date, &task[j].time, &task[j].i, &task[j].group,
&task[j].title, &task[j].sub);
}
for(j=0;j<num;j++){
switch(task[j].group){
case 0:
group.gr0 = group.gr0 + 1;
break;
case 1:
group.gr1 = group.gr1 + 1;
break;
case 2:
group.gr2 = group.gr2 + 1;
break;
case 3:
group.gr3 = group.gr3 + 1;
break;
case 4:
group.gr4 = group.gr4 + 1;
break;
}
}
printf("%d %d %d %d %d",
group.gr0, group.gr1, group.gr2,
group.gr3, group.gr4);
return 0;
}
解决方案
您正在将文件中的第一个数字读入num
,然后尝试读取此次数的输入。对我来说,这看起来好像您的输入以存在的项目数开始,然后列出每个项目。
但是,您正在调用rewind()
一个您已读取其值num
然后继续读取输入的人。您可能知道,rewind()
带您回到文件的开头。这意味着在您尝试读取第一项时,您实际上正在读取项的数量以及第一项,并且您的输入处理将偏离正轨。
您可能需要删除rewind()
呼叫。
推荐阅读
- c++ - 查找具有真值 C++ 的下一个数组索引
- python - “调用‘打印’时缺少括号。” 在阿皮约里
- mysql - 如何使用 sql 向该表添加约束?
- php - PHP:标记为字符串内的链接值(文本区域字符串)
- python - 当id是动态的时如何在html中查找元素?我的目标是找到元素并在其下选择“选项”
- javascript - 使用动态 URL 创建动态数量的按钮
- javascript - 如何在 Total.js Flow 中动态更改组件颜色
- ios - 使用我的按钮的用户默认值保存不同的 setTitle 时遇到问题
- php - 表头不显示
- firebase-realtime-database - 将 firebase-functions-test 与模拟器一起使用