Я хотел бы знать, как распечатать значение char* word
из этой структуры.
struct word_count_struct {
char *word;
int count;
};
Этой структуре было присвоено значение, поскольку функция
struct word_count_struct *new_word_count( char *word )
{
struct word_count_struct *new_word_count = (struct word_count_struct *)malloc(sizeof(struct word_count_struct));
new_word_count->word = "Hello";
new_word_count->count = 1;
return new_word_count;
}
Когда я использую word_count_struct new_word_count( &word );
или new_word_count( &word );
для вызова функции и puts(new_word_count->word);
для вывода члена из main.c,
я получаю сообщение об ошибке
error: called object ‘new_word_count’ is not a function or function pointer
а также
note: declared here
struct word_count_struct *new_word_count;
В чем я конкретно не уверен, так это в вызове функции, я знаю, что с любой другой функцией я бы обычно использовал код function_name(passing arguments);
, но эта функция возвращает указатель структуры, и, похоже, в сигнатуре функции есть два имени.
Если я не использую функцию для присвоения значения членам структуры, я могу распечатать значение new_word_count->word в main.c без проблем, поэтому я считаю, что мои проблемы должны исходить из вызова функции. Заранее спасибо.
Минимальный, полный и проверяемый пример:
#include <stdio.h>
#include <stdlib.h>
struct word_count_struct {
char *word;
int count;
};
struct word_count_struct *new_word_count( char *word );
int main()
{
struct word_count_struct *wordcountptr;
char *word = "Hello";
wordcountptr = new_word_count(word);
puts(wordcountptr->word); /* print out the string "Hello" which was assigned to this struct member though the word_count_struct function */
free(wordcountptr);
return 0;
}
/* this function should take the value of the passing argument and assign it to the word member of struct word_count_struct and then return a pointer to that struct */
struct word_count_struct *new_word_count( char *word )
{
struct word_count_struct *new_word_count;
new_word_count = (struct word_count_struct *)malloc(sizeof(struct word_count_struct)); /* allocate memory for struct */
new_word_count->word = &word; /* assign the memory address of passing argument to this member */
new_word_count->count = 1;
return new_word_count;
}
word_count_struct new_word_count( &word );
не является кодом C. Вы намеревались написатьword_count_struct *mystruct = new_word_count( &word );
. Пожалуйста, покажите минимально воспроизводимый пример, ваш вопрос несколько неясен. - person Jabberwocky   schedule 11.02.2018