Intereting Posts
Инициализировать GObject с параметрами, которые не являются свойствами GObject? Почему я получаю разные результаты при использовании функции против макроса? Неисправность прототипа функции c – это просто предупреждение Ошибка: неопределенная ссылка на математические функции Проблема strtok (): если токены ограничены разделителями, почему последний токен между разделителем и нулевым «\ 0»? Может ли Mac OS X El Capitan запускать программное обеспечение, скомпилированное для Yosemite, которое ожидает библиотеки в / usr / gnu64 / lib? Как я могу эффективно кодировать / декодировать сжатое описание позиции? valgrind: mmap (0x600000, 8192) не удалось в UME с ошибкой 12 (не может выделить память) Создайте среду сборки для проекта «C» для динамического выбора папок во время компиляции Как использовать nanosleep () в C? Что такое `tim.tv_sec` и` tim.tv_nsec`? Скрыть курсор на удаленном терминале Улучшение временной сложности всех перестановок заданной строки Приращение указателей, точная последовательность C получить режим из списка целых чисел Является ли стандартным для #if принимать неопределенные символические константы как 0?

Объявить переменную string / word в C

Я довольно новичок в C, и мне просто интересно, как объявить переменную слова.

Например, пока

int variable; 

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

 string name = "Joe"; 

или же

 string name = "My name is Joe"; 

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

Это весь мой код:

 #include  int main () { printf("What is your name?\n"); **string** name; scanf("%s", &name); printf("Hello, %s", name); getch(); return 0; } 

 char name[30]; /* pre-allocated memory of stack */ 

Затем сканируйте это значение в. Или

 char *name = malloc(sizeof(char) * 30); /* run-time allocation on heap */ 

Я просто использую 30 здесь, предполагая, что входная строка соответствует 30 символам, вы можете увеличить или уменьшить ее, это зависит от вашего желания.

Объявите свой массив следующим образом:

 char name[20]; //^^Here you can choose what you want! 

Также я бы прочитал следующую строку:

 scanf(" %s", &name); //^See the space here! The space is there so if a '\n' is still in the buffer it doesn't get read in for the name! 

BTW: Возможно, вы хотите посмотреть здесь: http://www.cplusplus.com/doc/tutorial/

Это сохранит макс. Строка длиной 50 символов

 char word [50+1]; 

Но если вы хотите определить размер во время выполнения, используйте это:

 char *word = (char*)malloc(sizeof(char)*length); 

Вы можете использовать массив для хранения значения. Объявите массив.

Подобно этому char name[20];

 scanf("%s", name); 

У вас есть два варианта для вас.

  1. статически выделяемый массив char .

Пример.

 char cArray[16] = "Hello"; //will have 16 elements, initialized 5 with hello 

или же

 char cArray[ ] = "Hello"; //number of char element is 6, considering terminating null. 
  1. указатель на переменную char с динамически распределенной памятью.

Пример:

 char * cPtr = NULL; cPtr = malloc(16); //again, 16 char elements 

Примечание: массив char , который должен использоваться как строка , ДОЛЖЕН быть завершен с нулевым значением.