Ввод-вывод строковых данныхПри вводе строк, как и символов, используется функция scanf(). При этом для форматного ввода и вывода строк используется спецификатор %s. Однако нажатие клавиши [Enter] или клавиши [пробел] не является значимым символом. При вводе строки с помощью функции scanf() нажатие одной из этих клавиш формирует символ конца строки. Таким образом надо помнить, что функция scanf() позволяет записать в строку только одно слово. Пример. Организовать ввод ФИО студента. char fam[20]; printf (" Введите фамилию и инициалы студента"); scanf(" %s", fam); На клавиатуре строка набирается без кавычек, например: Андреева С.В. [Enter] Одновременно с вводом строки в байт с индексом восемь запишется символ с кодом 0. Инициалы студента в эту строку записаны не будут, так как пробел после фамилии будет воспринят командой scanf как конец строки. Для ввода текста содержащего пробелы следует использовать специальную функцию gets(). При вводе строки с помощью этой функции только нажатие клавиши [Enter] сформирует символ конца строки. Так, например, в предыдущей задаче: char fam[20]; printf(“Введите фамилию и инициалы студента”); gets(fam); использование функции gets() позволит записать в строку fam не только фамилию, но и инициалы. Вывод строк осуществляется с помощью функции printf() и специальной функции puts(). Например, оператор printf(“| %20s|”, fam); выведет на экран в правую часть поля из 20 позиций строку fam: | Андреева С.В.| Специальная функция puts() позволяет вывести содержимое строки и переводит курсор на следующую строку. Например: putchar(‘|’); puts(fam); putchar(‘|’); приведет к получению следующего результата: |Андреева С.В. | Последний символ будет выводиться в следующей строке экрана. Обработка строковых данных К любому символу строки можно обратиться как к элементу одномерногомассива, например, запись st[i] определяет i-ый символ в строке st. Поэтому при решении некоторых задач обработку строковых данных можно проводить посимвольно, организуя циклы для просмотра строки. Например: Дано предложение. Определите количество слов в нем. Решение: Слова в предложении разделяются пробелами. Подсчитав количество пробелов, можно определить количество слов, учитывая, что между словами введен только один пробел. #include " stdafx.h" #include< string.h> int main() { char slova[120]; int i, n, k=1; printf(" Введите предложение\n"); gets(slova); n= strlen(slova); // функция strlen() возвращает длину строки for(i=0; i< n; i++) if(slova[i]==' ')k++; //поиск и подсчет пробела printf(" k=%d\n", k); return 0; }
|