2015-03-01 3 views
0

Это, вероятно, легкий, но мой мозг жарится от всего этого. Для функции ниже я хочу вернуть все камни, которые равны 2, а не только первые. Это просто печатает первый камень, который равен 2 найденным. Заранее спасибовозвращает все значения в функции

void view_drilled_rocks() 
{ 
    int i; 
    for (i=0;i<totalRocks;i++){ 
     if (rocks[i].rock_completed==2){ 
       printf("Rock No. Geoligist Drill(Y/N) Due date or comp date\n"); 
       printf("%d \t %s \t %d \t%s", rocks[i].rock_rover_number, rocks[i].geoligist, rocks[i].rock_completed , rocks[i].due_date); 
      return 0; 
     } 
    } 

} 
+3

Почему вы смешиваете вкладки и пробелы? – chqrlie

+0

Лучшее отступы гарантировали бы, что вы не столкнулись с этой проблемой. –

ответ

3

Удалите return 0; заявление от блока.

Кроме того, функция void не должна return значение.

+0

, который отправляет его на бесконечный цикл – niallo27

+1

Зачем? 'i' начинается с' 0', увеличивается один раз в каждом цикле и останавливается на 'totalRocks'. Не бесконечный цикл ИМХО. – chqrlie

+1

Это может быть неопределенное поведение, вы должны были спросить об этой проблеме, но вам нужно опубликовать остальную часть кода. Кроме того, если вы должны были использовать предупреждения компилятора, то факт, что ваша функция возвращает значение, и объявлена ​​как возвращающая 'void', т. Е. Не возвращающая значение, была бы указана. –

1

Оператор return не должен находиться внутри блока if. Кроме того, тип возврата для вашей функции - void. Он не должен возвращать значение.

0
  1. Если вы хотите ЗАПИСАТЬ все камни, удалите return 0;, как уже упоминалось ранее.
  2. Если вы хотите вернуть объекты, соответствующие породы, вы должны сделать «коллекции» (например, массив) из найденных объектов и вернуть их в функции (не используя пустоты и на самом деле возвращения что-то)
Смежные вопросы