Вот программа:.ПРОГР, который печатает длину строки в C
#include <stdio.h>
#define BUF_LEN 200
#define LINE_NUMBER 3
int line_len(char* filename, int n)
{
FILE* f;
char buf[BUF_LEN];
int j, i = 0;
if ((f = fopen(filename, "r")))
{
for (j = 0; j < n; j++)
fgets(buf, BUF_LEN, f);
for (i = 0; buf[i]; i++) /* find end of buf */ ;
fclose(f);
}
return i;
}
int main()
{
printf("%d\n", line_len("test.txt", LINE_NUMBER));
return 0;
}
Из того, что я понимаю, функция line_len
получает имя файла и номер строки, мы заинтересованы в этом затем открывает файл в режиме только для чтения и итерации до достижения линии n
через каждую итерацию, считывая BUF_LEN-1
символов из файла f
и сохраняя эти символы в buf
. Поэтому, когда первый для цикла прерывается, buf
будет содержать все символы первых строк n
.
Я не понимаю необходимость второго цикла. Когда он заканчивается? Как работает эта функция? Если в конце первого цикла цикла buf
будет содержать символы первых строк n
, тогда как эта функция возвращает длину строки n
?
Заранее благодарен!
Вы забыли написать какие-либо строки кода? – Marievi
Код действительно работает, не так ли? –
Первый цикл 'for' добавляет каждый символ строки n в массив buf. Второй цикл 'for' подсчитывает длину массива buf (i) и возвращает это. – Forklift