Хелпикс

Главная

Контакты

Случайная статья





Функции работы со строками.



Функции работы со строками.

Для лексикографического сравнения строк используются функции int strcmp(строка1, строка2) и int stricmp(строка1, строка2). Первая сравнивает строки с учетом регистра, вторая – без. Все это относится только к латинице. Пример использования функции сравнения строк:

char s[80];

 

printf("Введите пароль: ");

gets(s);

 

if(strcmp(s, "pass"))

printf("Неверный пароль\n");

 

Для вычисления длины строки используется функция strlen (строка). Функция возвращает длину строки за вычетом нулевого байта. Эта функция полезна в случаях, если вам нужно последовательно обратиться ко всем символам строки, не нарушив при этом ее длину. Пример:

char len;

len=strlen(str);

for (i=0;i<len;i++) {

     // работа со строкой, не изменяющая ее длину

}

Зачастую требуется преобразовать число в строку и наоборот. Есть несколько способов сделать это.

1) использовать функции sprintf и sscanf. Например, так:

char str[50]; int i=15; int j; sprintf(str, "%d", i); // Записать в str строковое представление i sscanf(str, "%d", &j); // Записать в j число, содержащееся в строке str sprintf(str, "i=%d and j=%d", i, j); // содержимое str: "i=15 and j=15"

Функция int sprintf(строка, формат, [аргументы]) работает аналогично printf(), но выводит отформатированное содержимое не на экран, а в строку, указанную в качестве первого аргумента. Функция возвращает значение, равное числу символов, записанных в строку. Пример:

char buffer [50];

int n, a=5, b=3;

n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);

printf ("[%s] is a %d char long string\n",buffer,n);

Функция int sscanf(строка, формат, [аргументы]) осуществляет считывание данных из строки и запись в аргументы в соответствии с форматом. Как и в обычной функции scanf(), перед аргументами ставится &.

Хотя sprintf и sscanf довольно удобны, у них есть несколько недостатков. Во-первых, они не всегда быстро работают, во-вторых не типобезопасны. Например, если в строке формата вы укажите, что передаете два целых, а вместо этого передадите два double, ошибка обнаружится только при выполнении программы и найти ее причину будет не так-то просто.

В-третьих, доступно целое семейство функций atof, atoi, atol и itoa, ltoa. Все они очень похоже между собой. Функции из первой группы преобразуют строку в число (float, int или long) в зависимости от окончания. Функции из второй группы выполняют обратное преобразование.

Пример (первый аргумент функции – число, второй аргумент – строка, третий аргумент – основание системы счисления):

char str1[5]; char str2[5]; char str3[5]; itoa(12, str1, 10); //str1=”12” itoa(12, str1, 16); //str1=”C” itoa(12, str1, 2); //str1=”1100”


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.