Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Строки в C: объявление, инициализация и ввод-вывод

Строки в программировании на C

Это руководство проведет вас через основы строк в C: объявление, инициализацию, ввод/вывод, использование функций, указателей и основных библиотечных функций.

В C строка — это массив символов, оканчивающийся нуль-байтом \0. Например:

char c[] = "c string";

Компилятор автоматически добавляет \0 к строковому литералу, делая его корректной строкой C.

Строки в C: объявление, инициализация и ввод-вывод

Как объявить строку?

Строки объявляются как массивы символов. Например:

char s[5];
Строки в C: объявление, инициализация и ввод-вывод

Это объявляет буфер, вмещающий до 4 символов плюс завершающий \0.


Как инициализировать строки?

Доступно несколько стилей инициализации:

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
Строки в C: объявление, инициализация и ввод-вывод

Берегитесь переполнения буфера: char c[5] = "abcde"; пытается записать шесть символов (включая \0) в массив из пяти байт — этого следует избегать.


Присваивание значений строкам

Массивы нельзя присваивать после объявления. Вместо этого используйте strcpy():

char c[100];
strcpy(c, "C programming");

Примечание: Прямое присваивание вроде c = "C programming"; вызывает ошибку компиляции.


Чтение строк от пользователя

Используйте scanf() для ввода, разделенного пробелами:

#include <stdio.h>
int main() {
    char name[20];
    printf("Enter name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

Вывод

Enter name: Dennis Ritchie
Your name is Dennis.

Захватывается только первое слово, потому что scanf() останавливается на пробеле. Имя массива преобразуется в указатель, поэтому name передается напрямую.

Как прочитать целую строку?

Используйте fgets() и puts():

#include <stdio.h>
int main() {
    char name[30];
    printf("Enter name: ");
    fgets(name, sizeof(name), stdin);
    printf("Name: ");
    puts(name);
    return 0;
}

Вывод

Enter name: Tom Hanks
Name: Tom Hanks

fgets() читает до sizeof(name)-1 символов, включая пробелы. Она также сохраняет завершающий символ новой строки, который puts() выводит.

Примечание: gets() устарела и исключена из стандарта C, так как может вызвать переполнение буфера.


Передача строк в функции

Строки передаются в функции так же, как массивы. Пример:

#include <stdio.h>
void displayString(char str[]);
int main() {
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    displayString(str);
    return 0;
}
void displayString(char str[]) {
    printf("String Output: ");
    puts(str);
}

Строки и указатели

Имена строк преобразуются в указатели, позволяя использовать арифметику указателей:

#include <stdio.h>
int main(void) {
    char name[] = "Harry Potter";
    printf("%c", *name); // H
    printf("%c", *(name+1)); // a
    printf("%c", *(name+7)); // o
    char *namePtr = name;
    printf("%c", *namePtr); // H
    printf("%c", *(namePtr+1)); // a
    printf("%c", *(namePtr+7)); // o
}

Часто используемые строковые функции

Язык C

  1. Строки в C#: основы, операции и продвинутые техники
  2. Освоение пространств имен в C#: организация, область видимости и лучшие практики
  3. Как передавать массивы в функции в C++: практическое руководство
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Строковые представления в Java Enums: настройка toString() и лучшие практики
  6. Функции строк в C++: strcpy, strcat, strlen, strcmp — практические примеры
  7. Строки в C просто: объявление, ввод, вывод и библиотечные функции
  8. Освоение строковых операций в Python: replace, join, split, reverse, преобразование регистра
  9. Освоение программирования на C: подробное руководство для начинающих
  10. Класс String в Java: создание, манипуляции и основные методы