-1

我想从文件中获取输入并将其完全显示在屏幕上。

我正在从一个文件中获取输入,该文件包含:

  1. 每学期课程数量和最大允许课程
  2. 所有课程名称(最多 5 个字母数字)
  3. 课程名称、提供的学期、必修课程的数量、必修课程。
  4. -1 和 -1 最后。

输入

意外输出

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

char garbage[12][6];
char courseIdentifier[12][6],prereqIdentifier[12][5][6];
char semOffered[12];
bool done[12];

int main(void)
{
    FILE *fp;
    fp = fopen("graduate.in","r");
    int n,m,p[12];
    int i,j,k;
    fscanf(fp,"%d %d",&n,&m);// take n,m
    while(n != -1)
    {
        for(i=0;i<n;i++) //the list of offered courses
        {
            fscanf(fp,"%s",garbage[i]);
        }
        for(i=0;i<n;i++)
        {
            fscanf(fp,"%s %c %d",courseIdentifier[i],&semOffered[i],&p[i] );//the name of course, sem,no. of prereqs
            for(j=0; j < (p[i]) ;j++)
            {
                fscanf(fp,"%s ",prereqIdentifier[i][j]);
            }
        }
        for(i=0;i<n;i++)
        {
            printf("%s %c %d ",courseIdentifier[i],semOffered[i],p[i]);
            for(j=0; j < (p[i]) ; j++ )
            {
                printf("%s ",prereqIdentifier[i][j]);
            }
            printf("%s\n");
        }
        fscanf(fp,"%d %d",&n,&m);// take n,m
        printf("\n\n");
    }
    fclose(fp);
    return 1;
}

输出不正确。我在哪里做错了,使用数组还是fscanf()

4

1 回答 1

2

这一行:

printf("%s\n");

将打印一些随机垃圾——基于特定寄存器中的任何字符串。看起来在您的情况下,它始终会打印额外的副本courseIdentifier[i]

于 2013-07-18T07:59:42.347 回答