C. Почему моя строка возвращает Null при отправке в функцию?

Я полный новичок, но я делаю проект для школы, и я просто не могу заставить его работать.

Цель проста: отсканировать 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)

Надеюсь, вы уже заметили проблему, если это так, пожалуйста, помогите мне исправить мой код. Остальные могу выслать, если хотите, просто обрезал для простоты.

Код, который вы разместили, содержит ошибки. Вы передаете двумерный массив функции, которая принимает одномерный массив, а также печатаете символ nombres[3], используя %s вместо %c. Я думаю, вам также придется опубликовать остальную часть вашего кода, так как этого кода недостаточно для воспроизведения проблемы, которую вы описываете.

costaparas 13.12.2020 02:49

В стороне: char abc(char nombres[]) { printf("\n%s", nombres[3]); } определен как возвращающий char, но ничего не возвращает. Возможно, вместо возврата char используйте void.

chux - Reinstate Monica 13.12.2020 07:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы передаете функции, несовместимо с типом параметра.

Функция ожидает параметр типа char [], который как параметр функции точно такой же, как char *. То, что вы передаете ему, является char [20][20]. Ваш компилятор должен был предупредить вас об этом. Он также должен был предупредить вас об отправке nombres[3] внутри abc, который имеет тип char, то есть один char, а не строку, как ожидает спецификатор формата %s.

Вам нужно изменить тип параметра на функцию, чтобы она соответствовала тому, что вы ей передаете, и тому, как вы ее используете.

char abc(char nombres[20][20])

Да!!!! Это сработало! Большое спасибо! С этого момента я буду уделять больше внимания журналу компилятора, и, надеюсь, мой следующий вопрос не будет о чем-то столь тривиальном. Еще раз спасибо!!

Dynaheart 13.12.2020 03:02

@Dynaheart Рад, что смог помочь. Не стесняйтесь принять этот ответ, если вы нашли его полезным.

dbush 13.12.2020 03:04

Другие вопросы по теме