Ну, во-первых, вы, кажется, думаете, что char
означает string
.... иногда? char
означает символ, число от 0 до 255. Как указано в предупреждении в строке 15, values[j]
и values[j+1]
не являются строками (char *
), они являются символами (char
). Возможно, вы захотите сделать значения массивом строк, то есть массивом символов.
2-й набор предупреждений, которые вы получаете, относится к строке 31, где вы возвращаете массив символов (указатель) из функции, которая утверждает, что возвращает символ. Компилятор молча приводит указатель на символ (поскольку указатель является числом) и возвращает его. Вы получите случайное число, которое, вероятно, не то, что вы хотите.
Чтобы исправить это, вам нужно заставить функцию возвращать char *
, но есть одна загвоздка. randStr
исчезает, как только вы выходите из функции, что делает невозможным возврат. Вы можете использовать strdup
для дублирования строки, а после того, как вы закончите использовать ее в своей основной функции, вы вызываете free
, чтобы избавиться от нее.
Пока мы работаем с этой функцией, ее параметр должен быть char *
, а не char[]
. Они имеют разные значения.
Последнее сообщение (очевидно, единственная ошибка, о которой сообщается как таковое), потому что вы не определили rand()
. Добавление #include <stdlib.h>
в начале программы должно исправить это.