Int len;
char s[] = "Prodigy";
len = strlen(s);
printf ( "Длинастроки %s равна %d", s, len );
}
В этом примере функция определит, что длина строки равна 7. Теперь рассмотрим более сложную задачу.
Задача.В текстовом файле input.datзаписаны строки текста. Вывести в файл output.dat
в столбик длины этих строк.
#include <stdio.h>
#include <string.h>
Main()
{
char s[80];
FILE *fin, *fout;
fin = fopen ( "input.dat", "r" );
fout = fopen ( "output.dat", "w" );
while ( NULL != fgets(s, 80, fin) ) // читаемстроку s
{
fprintf(fout, "%d\n", strlen(s)); // выводим ее длину в файл
}
Fclose ( fin );
Fclose ( fout );
}
Несмотря на то, что с первого взгляда программа написана верно, числа в файле будут на единицу больше, чем длины строк (кроме последней строки). Вспомнив предыдущий материал,объясните это. Далее будет показано, как получить точный результат.
Сравнение строк – strcmp
Для сравнения двух строк используют функцию strcmp(от английских слов string comparison– сравнение строк). Функция возвращает ноль, если строки равны (то есть «разность»между ними равна нулю) и ненулевое значение, если строки различны. Сравнение происходитпо кодам символов, поэтому функция различает строчные и заглавные буквы – они имеют разныекоды.
#include <stdio.h>
#include <string.h>
Main()
{
char s1[] = "Вася",
s2[] = "Петя";
if ( 0 == strcmp(s1,s2) )
printf("Строки %s и %s одинаковы", s1, s2);
else printf("Строки %s и %s разные", s1, s2);
}
Если строки не равны, функция возвращает «разность» между первой и второй строкой, то есть разность кодов первых различных символов. Эти числа можно использовать для сортировки строк – если «разность» отрицательна, значит первая строка «меньше» второй, то есть стоит за ней в алфавитном порядке. В таблице показано несколько примеров (код буквы 'A'равен 65,
код буквы 'B'– 66, код буквы 'C'– 67).
Задача. Ввести две строки и вывести их в алфавитном порядке.
#include <stdio.h>
#include <string.h>
Main()
{
char s1[80], s2[80];
printf ("Введитепервуюстроку");
Дата добавления: 2015-10-05; просмотров: 575;