Я ненавижу давать «полные» ответы на домашние вопросы, но единственный способ ответить на ваш вопрос - показать вам ответ на вашу проблему, потому что он настолько прост:
#include <stdio.h>
#include <string.h>
#define MAXLEN 20
char substr[10][MAXLEN];
int main(void) {
strncpy(substr[0], "abc", MAXLEN);
puts(substr[0]);
return 0;
}
Ваш код (как есть) имеет несколько ошибок:
- Вы рассматриваете
substr[0]
как строковый литерал.Вы не можете этого сделать. - Вы неправильно использовали форматтеры printf.
%s
для строк - Вам не нужно беспокоить
printf()
для печати строки - Вы должны (в реальном коде) следить за переполнением буфераследовательно,
strncpy()
- Если
main()
не хочет / нуждается argc
и argv
, его аргументы должны быть void
main()
должны возвращать значение,тип возвращаемого значения int
- Вы не используете ничего из
<stdlib.h>
, зачем его включать?
Я предлагаю исследовать строковые литералы, функции, доступные в <string.h>
, а также спецификаторы формата.
Также обратите внимание, что я не проверяю возврат strncpy () , что вам следует сделать.Это оставлено как упражнение для читателя.