Я довольно новичок в 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);
У вас есть два варианта для вас.
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.
char
с динамически распределенной памятью. Пример:
char * cPtr = NULL; cPtr = malloc(16); //again, 16 char elements
Примечание: массив char
, который должен использоваться как строка , ДОЛЖЕН быть завершен с нулевым значением.