2013-07-18 3 views
-1

Я хочу взять данные из файла и отобразить его точно на экране.Использование fscanf() и массивов

Я беру данные из файла, который содержит:

  1. Нет курсы и максимально допустимый курс за семестр
  2. Всего Название курса (5 буквенно-цифровой макс) имя
  3. Конечно, Предлагает семестр , количество предварительных, предварительных курсов.
  4. -1 и -1 в конце.

input

Unexpected output

#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()?

+2

Нам нужно будет посмотреть код. –

+0

@ColeJohnson, thanks :) – IRock

+0

Итак, позвольте мне получить этот пролив, вы хотите прочитать файл, а затем вывести его и все? –

ответ

2

Эта линия:

printf("%s\n"); 

напечатает некоторый случайный мусор - основанный на то, что строка оказывается в определенном регистре. Похоже, в вашем случае он постоянно распечатывает дополнительную копию courseIdentifier[i]

+0

Я попытался заменить его printf ("% s \ n"); Это не сработало – IRock

+0

@IRock printf ожидает, что вы передадите дополнительную cstring в качестве параметра при использовании «% s»: printf («% s \ n», maFancyString); Вы должны взглянуть на некоторые документы на printf и друзья. – iolo

+0

@IRock Почему вы используете printf ("% s \ n") ?. printf ("% s \ n") без аргументов печатает случайную строку. Вы не собираетесь печатать что-либо прямо тогда y% s der? JUst использует printf ("\ n"), если вы хотите напечатать строку. –

Смежные вопросы