Puts(s); //вывод строки в стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до символа ‘\n’, т.е. в s занесется строка”123 456 789\n\0”, при выводе строки функция puts возвращает еще один символ ‘\n’, следовательно, будет выведена строка “123 456 789\n\n”.
char s[20];
scanf(“%s”, s); //ввод строки из стандартного потока
printf(“%s”, s); //вывод строки в стандартный поток
При вводе строки “123 456 789”, чтение байтов осуществляется до первого пробела, т. е. в строку s занесется только первое слово строки “123/0”, следовательно, выведется 123. Так как s – имя массива, т.е. адрес его первого элемента, операция & в функции scanf не используется.
Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h. Рассмотрим некоторые из этих функций.
unsigned strlen(const char*s); Вычисляет длину строки s.
int strcmp(const char*s1, const char *s2); Сравнивает строки s1 и s2. Если s1<s2, то результат отрицательный, если s1==s2, то результат равен 0, если s2>s1 – результат положительный.
int strncmp(const char*s1, const char *s2); Сравнивает первые n символов строк s1 и s2. Если s1<s2, то результат отрицательный, если s1==s2, то результат равен 0, если s2>s1 – результат положительный.
char *strcpy(char*s1, const char*s2); Копирует символы строки s1 в строку s2.
char *strncpy(char*s1, const char*s2, int n); Копирует n символов строки s1 в строку s2. Конец строки отбрасывается или дополняется пробелами.
char *strcat(char*s1, const char*s2); Приписывает строку s2 к строке s1.
char *strncat(char*s1, const char*s2); Приписывает первые n символов строки s2 к строке s1.
Пример:
Дана строка символов, состоящая из слов, слова разделены между собой пробелами. Удалить из строки все слова, начинающиеся с цифры.
#include <stdio.h>
#include <string.h>
Void main()
{
char s[250], //исходная строка
w[25], //слово
mas[10][25]; //массив слов
puts(“\nвведите строку”);
gets(s);
int k=0, t=0, i, len, j;
len=strlen(s);
while(t<len)
{
for (j=0, i=t; s[i]!=’ ‘; i++, j++) w[j]=s[i];//формируем слово до пробела
w[j]=’/0’; //формируем конец строки
strcpy(mas[k],w); //копируем слово в массив
k++; //увеличиваем счетчик слов
t=i+1; //переходим к следующему слову в исходной строке
}
Strcpy(s,””); //очищаем исходную строку
for(t=0; t<k; t++)
if(mas[t][0]<’0’&&mas[t][0]>’9’) //если первый символ не цифра
{
strcat(s, mas[t]); //копируем в строку слово
Strcat(s, ” “); //копируем в строку пробел
}
Puts(s); //выводим результат
}