Я полный новичок, но я делаю проект для школы, и я просто не могу заставить его работать.
Цель проста: отсканировать 5 строк, подсчитать их гласные и затем отсортировать по алфавиту с помощью функций.
У меня есть гласная часть, но когда я отправляю уже отсканированные строки в свою функцию, она считывается как нулевая, поэтому я не могу ее там отсортировать.
Я покажу вам очень упрощенный код, чтобы мне было легче выделить проблему (без пузырьковой сортировки):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char abc(char nombres[])
{
printf("\n%s", nombres[3]);
}
int main()
{
char nombres[20][20];
printf("Ingrese 5 nombres:\n")
for (int i = 0; i < 5; i++)
{
scanf(" %s", nombres[i]);
}
abc(nombres);
return 0;
}
В моем воображении он должен отображать третий отсканированный ввод, но вывод гласит:
Ingrese 5 nombres
juan
alberto
lautaro
milo
beatriz
(Null)
Надеюсь, вы уже заметили проблему, если это так, пожалуйста, помогите мне исправить мой код. Остальные могу выслать, если хотите, просто обрезал для простоты.
В стороне: char abc(char nombres[]) { printf("\n%s", nombres[3]); }
определен как возвращающий char
, но ничего не возвращает. Возможно, вместо возврата char
используйте void
.
То, что вы передаете функции, несовместимо с типом параметра.
Функция ожидает параметр типа char []
, который как параметр функции точно такой же, как char *
. То, что вы передаете ему, является char [20][20]
. Ваш компилятор должен был предупредить вас об этом. Он также должен был предупредить вас об отправке nombres[3]
внутри abc
, который имеет тип char
, то есть один char
, а не строку, как ожидает спецификатор формата %s
.
Вам нужно изменить тип параметра на функцию, чтобы она соответствовала тому, что вы ей передаете, и тому, как вы ее используете.
char abc(char nombres[20][20])
Да!!!! Это сработало! Большое спасибо! С этого момента я буду уделять больше внимания журналу компилятора, и, надеюсь, мой следующий вопрос не будет о чем-то столь тривиальном. Еще раз спасибо!!
@Dynaheart Рад, что смог помочь. Не стесняйтесь принять этот ответ, если вы нашли его полезным.
Код, который вы разместили, содержит ошибки. Вы передаете двумерный массив функции, которая принимает одномерный массив, а также печатаете символ
nombres[3]
, используя%s
вместо%c
. Я думаю, вам также придется опубликовать остальную часть вашего кода, так как этого кода недостаточно для воспроизведения проблемы, которую вы описываете.