Присвоение значений символам в структурах - c - PullRequest
0 голосов
/ 21 апреля 2010

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

struct class
{
  char class_num[4];
  char *class_name;
}

Если бы кто-нибудь мог указать мне, как это сделать, или, по крайней мере, указать мне правильное направление, что было бы здорово. спасибо

Ответы [ 2 ]

1 голос
/ 21 апреля 2010

Что такое "class_num"?

Как правило, вам нужно явно управлять строковой памятью. Функция strdup () может помочь. Рассмотрим:

struct class cls;
char buf[256] = {0};
puts("Name?");
fgets(buf, 255, stdin);
cls.class_name = strdup(buf); 
//you need to free "cls.class_name" after its use is over

Это позволит пользователю вводить строку длиной до 255 символов и будет сохранять (копировать) эту строку в элементе «class_name» экземпляра структуры «cls».

0 голосов
/ 21 апреля 2010

В Си символы просто тип целого числа, за исключением того, что они могут быть подписаны или без знака (int подписывается по умолчанию). Таким образом, class_num [i] является однобайтовым целым числом. Есть много способов ввода, и это зависит от того, должен ли он быть строкой или четырехбайтовым кодом или чем-то еще. Как сказал Джон Ватт, вам также придется управлять памятью для другого поля. Вы можете посмотреть scanf, strtod или strtol в сочетании с read или fread. Если у вас нет более сложного ввода, такого как база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...