Моя проблема очень проста, но я действительно не знаю, как работать со строками в CC струна проблема
Проблема заключается в том: У меня есть структура называется человек
struct person
{
char name[25] // use char *name better?
}p;
У меня также есть функция называется p *addNewPerson(char *name)
p *addNewPerson(char *name)
{
p *newPerson = (p *)malloc(sizeof(person));
//here how can I assign the name to this new person?
...
return newPerson;
}
Таким образом, в основной функции
void main()
{
for(; ;)
{
char input[25];
scanf("%s", input); // is this way possible?
//shoud I do something with this "input", like input[strlen(input)-1] = '\0'
//call addNewPerson()
p *newPerson = addNewPerson(&input);
//store this newPerson in some data structure
...
}
}
Уточнение: Вопрос в том, как я могу присвоить имя новому человеку внутри p *addNewPerson(char *name)
?
В чем проблема? Помимо отсутствующей точки с запятой после имени [25]? – EboMike
http://www.learn-programming.za.net/programming_c_learn07.html –
Использовать «int main()»; Стандарт гарантирован. Ваш 'struct person' работает так, как есть. Если вы изменили на 'char * name;', вам понадобится 'malloc()' memory для него, а затем запомните 'free()' it. Ваш способ чтения имен в произведениях, пока 'scanf()' читает только 24 символа (вам нужен один для нулевого ограничителя строк), но 'scanf()' не очень безопасная функция для использования. Вы можете узнать более безопасные способы ввода данных позже. –