Переменные C Использование String string.h

Привет, я только начал с c и string.h (strings.h?), И я не нашел много уроков по этому поводу, поэтому некоторые вопросы для меня остаются такими:

Так что до сих пор я использовал

char name[10];

например, есть ли способ использовать как

string name

иметь переменную в виде строки?

Наконец я хочу сделать что-то вроде

int main (){
    string name;

    puts("name?");
    scanf("%s",name);
    printf("%s",filname);

}

7 ответов

В Си нет строки. По сути, в Си строка - это не что иное, как массив символов. Ты можешь использовать char* который является указателем на переменную типа char. Я не знаю, сколько вы знаете о C-указателях, но когда вы делаете что-то вродеint a[10]который является объявлением массива, указатель на целые числа сохраняется в виде переменной a, То же самое в символах, если вы используете char* в качестве указателя на символ у вас есть массив символов без размера по умолчанию. Но будьте осторожны, работая с указателями, вы можете столкнуться с таким большим количеством ошибок времени выполнения, поэтому будьте осторожны при написании кодов с указателями.

Нет ничего похожего на строку в C

Лучшее, что вы можете сделать, объявить строку так:

char greeting[] = "Hello";

или вот так:

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

Проверьте этот учебник.

Строка в языке программирования C на самом деле является одномерным массивом символов, который заканчивается нулевым символом '\0'. Таким образом, строка с нулевым символом в конце содержит символы, которые составляют строку, за которой следует ноль.

C не имеет классов, а std::string - это класс в C++, у вас есть доступ ко всем функциям c-string, хотя The C String Library

Взгляните на строковую ссылку (C++):

http://www.cplusplus.com/reference/string/string/

Не может ли он сделать это с

 #include <string.h>

В массиве символов cA нет типа данных, называемого строкой, это строка, и вы используете ее следующим образом.

char s[10];
scanf("%s",s);
printf(s);

Вы найдете эти функции полезными, которые находятся под string.h

strlen(s) дает длину строки

strcat(s1,s2) присоединяет или соединяет s2 к s1

strcpy(s1,s2) копирует s2 в s1

Нет, в C. нет встроенного динамически размещаемого строкового типа. Существуют сотни библиотек, которые предоставляют такие строковые классы, если они вам нужны, но для стандартных библиотечных функций, таких как scanf, вам нужно определить максимальный размер. заранее (или прибегнуть к функциям более низкого уровня).

Другие вопросы по тегам