2015-04-06 1 views
-1

Je suis un nouveau débutant en C, je fais des tâches de USACO, c'est la tâche "gift1". Je voudrais penser à des solutions moi-même, donc si vous venez de me dire pourquoi je reçois cette erreur de bus 10 au lieu de me donner la réponse de cette tâche, ce sera reconnaissant reconnaissant.erreur de bus 10 en C

J'utilise OS système X et gcc (de Xcode) version est

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1 
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) 
Target: x86_64-apple-darwin14.1.0 
Thread model: posix 

Voici mon code (toujours pas encore fini):

/* 
LANG: C 
TASK: gift1 
*/ 

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

FILE *input_file, *output_file; 

int total_people, giving_to_counter, accepting, having[9]; 

char giver[9][13], receiver[9][13], person; 

int people_scaner, people_judger; 

int main() { 
    input_file=fopen("gift1.in", "r"); 
    output_file=fopen("gift1.out", "w+"); 

    fscanf(input_file, "%d\n", &total_people); 

    people_scaner = 0; 

    while(people_scaner<total_people){ 
     fscanf(input_file, "%s", giver[people_scaner]); 
     people_scaner ++; 
    } 

    fscanf(input_file, "%s", &person); 
    printf("%s\n", &person); 

    people_judger = 0; 

    do{ 
     people_judger ++; 
    } while (
     strcmp(&person, giver[people_judger]) !=0 
     ); 

    fscanf(input_file, "%d%d", &having[people_judger], &giving_to_counter); 
    printf("%d\n%s\n%d\n%d\n", people_judger, giver[people_judger], having[people_judger], giving_to_counter); 


    fclose(input_file); 
    fclose(output_file); 
    return 0; 
} 

J'ai essayé d'utiliser le code tihs lire le fichier comme ceci:

5 
dave 
laura 
owen 
vick 
arm 
dave //if this line is "laura, owen, vick or arm" the code works good, but if it is "dave" I will get bus error 10? 
200 3 
laura 
owen 
vick 
owen 
500 1 
dave 
arm 
150 2 
vick 
owen 
laura 
0 2 
arm 
vick 
vick 
0 0 
+0

vérifiez le succès de 'fopen()' d'abord, puis celui de 'fscanf()'. –

+1

avec 'char person', en utilisant' fscanf (input_file, "% s", & person); 'est faux, même avec' printf ("% s \ n", & person); ' –

Répondre

0

Vous avez déclaré

char person; 

&person ne peut contenir qu'un seul caractère. Il ne peut pas contenir de nom. Par conséquent, les lignes suivantes sont erronées et provoquent un comportement indéfini.

fscanf(input_file, "%s", &person); 
printf("%s\n", &person); 
+0

merci pour cela, mon code peut lire "dave" de manière correcte, mais je reçois toujours une erreur de bus 10 après avoir changé 'personcar [13];' and all' & person'into'person' –