2015-04-06 3 views
-1

Я новый новичок в C, я выполняю задания из USACO, это задача «gift1». Я хотел бы думать о своих решениях, поэтому, если вы просто скажете мне, почему я получаю эту ошибку шины 10 вместо того, чтобы дать мне ответ на эту задачу, это будет благодарно.ошибка шины 10 в C

Я использую OS X System, и GCC (с Xcode) версия

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 

Вот мой код (до сих пор еще не закончена):

/* 
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; 
} 

Я пытался использовать код tihs читать файл, как это:

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

проверить успех 'fopen()' сначала, а затем 'fscanf()'. –

+1

с 'char person', используя' fscanf (input_file, "% s", & person); 'неверно, то же самое с' printf ("% s \ n", & person); ' –

ответ

0

Вы объявили

char person; 

&person может содержать только один символ. Он не может содержать имя. Следовательно, следующие строки неверны и вызывают неопределенное поведение.

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

спасибо за это, мой код может читать «dave» правильно, но я все равно получаю сообщение об ошибке 10 после того, как я изменил 'char person [13];' and all' & person'into'person' –

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