Получение строки в языке C: функция getline
<p>Функцияgetline()
в языке программирования C используется для чтения строки из стандартного ввода (stdin) или из файла. Синтаксис функции выглядит следующим образом:</p>
<pre><code class="hljs-c">#include <stdio.h>
char *getline(char *str, int size, FILE *stream);
</code></pre>
<p>Где:</p>
<ul>
<li>
str - указатель на массив символов, в который будет сохранена считанная строка.
</li>
<li>
size - максимальная длина строки, которую можно считать.
</li>
<li>
stream - указатель на структуру FILE, представляющую источник, из которого нужно считать строку.
</li>
</ul>
<p>Функция getline()
читает символы из источника, пока не встретит символ новой строки ('\n') или не достигнет максимально допустимой длины строки. Полученная строка сохраняется в массиве символов, на который указывает параметр str, и завершается нулевым символом ('\0').</p>
<p>Рассмотрим пример использования функции getline()
:</p>
<pre><code class="hljs-c">#include <stdio.h>
int main() {
char str[100];
printf("Введите строку: ");
getline(str, sizeof(str), stdin);
printf("Вы ввели: %s", str);
return 0;
}
</code></pre>
<p>В данном примере мы объявляем массив символов str
размером 100, в который будет сохранена введенная пользователем строка. Затем с помощью функции getline()
мы считываем строку с клавиатуры с помощью стандартного потока ввода stdin
. Затем с помощью функции printf()
мы выводим на экран введенную строку.</p>
<p>Теперь давайте посмотрим, как можно использовать функцию getline()
для чтения строк из файла. Допустим, у нас есть текстовый файл "input.txt" со следующим содержимым:</p>
<pre><code class="hljs-plaintext">Hello, world!
This is a test.
</code></pre>
<p>Мы можем модифицировать предыдущий пример следующим образом:</p>
<pre><code class="hljs-c">#include <stdio.h>
int main() {
FILE *file = fopen("input.txt", "r");
if (file != NULL) {
char str[100];
while (getline(str, sizeof(str), file) != NULL) {
printf("%s", str);
}
fclose(file);
} else {
printf("Не удалось открыть файл.");
}
return 0;
}
</code></pre>
<p>Здесь мы открываем файл "input.txt" в режиме только чтения с помощью функции fopen()
. Если файл успешно открыт, мы входим в цикл while
и повторяем считывание строк из файла с помощью функции getline()
до тех пор, пока она не вернет указатель на ноль, указывая на конец файла. Каждая считанная строка выводится на экран с помощью функции printf()
. В конце работы программы мы закрываем файл с помощью функции fclose()
.</p>
<p>Таким образом, функция getline()
является полезным инструментом для чтения строк из стандартного ввода или из файлов в языке программирования C. Она позволяет считывать длинные строки без необходимости заранее задавать их размер, что упрощает и улучшает гибкость ввода пользовательских данных.</p>