ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Функции ввода символьной строкиchar* gets(char *buffer); считывает символьную строку из стандартного входного потока и помещает ее по адресу, заданному указателем buffer. Прием строки заканчивается, если функция обнаружит символ ‘\n’ и данный символ заменяется на символ ‘\0’. Возвращает указатель на считанную строку. int scanf(const char * format, *buffer) считывает символьную строку из стандартного входного потока и помещает ее по адресу, заданному указателем buffer. Прием строки заканчивается, если функция обнаружит символ ‘\n’или” ” и данный символ заменяется на символ ‘\0’. Возвращаемое значение – число считанных полей Функции вывода символьной строки int puts(const char *string); записывает символ в стандартный поток данных и символ ‘\0’заменяется на ’\n’. Возвращает код переданного символа.. int printf(const char * format, ……); записывает символ в стандартный поток вывода символ ‘\0’ игнорируется. Возвращаемое значение – число записанный в поток символ Для просмотра введенных символов строки используется Примеры:
#include<stdio.h> Void main() { char x[100]; Int i; puts("Введите строку: "); Gets(x); for(i=0;x[i]!='\0';i++) printf("%c\n",x[i]); }
#include<stdio.h> Void main() { char x[100]; Int i; puts("Введите строку: "); Gets(x); for(i=0;x[i]!='\0';i++); printf("\n%s - содержит %d символов\n",x,i); }
#include<stdio.h> int srav(char *,char *); Void main() { char x[100],y[100]; Int l; puts("Введите строку: "); Gets(x); puts("Введите строку: "); Gets(y); l=srav(x,y); if(l==0) printf("строки одинаковы==\n"); Else printf("строки не одинаковы!=%d\n",l); } int srav(char *x,char *y) { for(int i=0;x[i] || y[i];i++) { if(x[i]>y[i]) Return 1; if(x[i]<y[i]) Return -1; } return 0;} 5.2 Функции работы со строками из библиотеки <string.h> char*strcpy(char*s1,const char*s2); копирует строку s2 в строку s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строку s2 и символ конец строки содержащий в копирующей строке. Возвращает значение строки s1. char*strcnpy(char*s1,const char*s2, size_t n); копирует не более n символов строки s2 в строку s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строку s2 и символ конец строки содержащий в копирующей строке. Возвращает значение строки s1.
char*strcat(char*s1,const char*s2); добавляет строку s2 строке s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строки s1 и s2, а так же символ конец строки. Возвращает значение строки s1. char*strncat(char*s1,const char*s2, size_t n); добавляет не более n символов строки s2 в строке s1, причем массив строк s1 должен быть достаточно большим, чтобы хранить строки s1 и s2, а так же символ конец строки. Возвращает значение строки s1. int strcmp(const char*s1,const char*s2); сравнивает посимвольно строки s1 и s2, возвращает 0, если строки одинаковы, 1 если встречается хотя бы один символ в строке s1, код которого больше, чем код символа строки s2 и -1, если встречается хотя бы один символ в строке s1, код которого меньше, чем код символа строки s2. int strcnmp(const char*s1,const char*s2,size_t n); сравнивает не более n символов строки s1 и s2, возвращает 0, если строки одинаковы, 1 если встречается хотя бы один символ в строке s1, код которого больше, чем код символа строки s2 и -1, если встречается хотя бы один символ в строке s1, код которого меньше, чем код символа строки s2. size_t strlen(const char*s); определяет длину строки s и возвращает количество символов, предшествующих символу конец строки. sise_t – это целый без знака тип, который определен в <stddef.h> char*strtok(char*s1,const char*s2); функция разбивает строку s1 на лексему (последовательность символов, отделенной символом разделителем, разделителем обычно служат пробелы или знаки пунктуации и задается как строка s2). Если последовательно вызывать strtok, можно разбить строку s1 на логические куски, разделенные символом, содержащим в строке s2. Первый вызов содержит в качестве первого аргумента строку s1, а последующие вызовы для обработки той же строки, содержит в качестве первого аргумента NULL. При каждом вызове возвращает указатель на текущую лексему. #include<stdio.h> #include<string.h> Void main() { char x[]="afs,gaf, agshdfah, ash%%gdha, as%gda%"; char *ptr; printf("разбитие строки на лексемы:\n"); ptr=strtok(x,","); while(ptr!=NULL) { printf("%s\n",ptr); ptr=strtok(NULL,","); } } В результате работы данной программы получим: разбитие строки на лексемы: Afs Gaf Agshdfah ash%%gdha as%gda% Задачи:
#include<stdio.h> Void main() { char m[100]; int n=0,i; printf("Ввести строку: "); scanf("%s",m); for(i=0;m[i];i++) { n*=10; n+=m[i]-'0'; } printf("\n%d\n",n); }
#include<stdio.h> Void main() { char s[50]; int x,i,sum=0; printf("Введите число: "); scanf("%s",s); for(i=0;s[i]!='\0';i++) { if(s[i]=='-' && i==0) Continue; x=s[i]-'0';//преобразования символа в число sum+=x; } printf("summa=%d\n",sum); } 10. С помощью данной программы можно определить код символа. #include<stdio.h> Void main() { Int x; Char ch; x=getchar(); ch=(char)x; printf("%c=%d\n",ch,x); } 11. За один просмотр исходного текста определить, сколько раз встречается каждый символ #include<stdio.h> Void main() { char arr[256],text[500]; Int i,j; for(i=0;i<256;i++) arr[i]=0;//Обнуляем массив встречаемости символов printf("\nВведите текст:\n"); Gets(text); for(j=0;text[j];j++) { i=(unsigned char)text[j];//аналогично i=(int)text[j]; arr[i]++; } for(i=0;i<256;i++) { if(arr[i]) printf("\nСимвол '%c' встречается %d раз",i,arr[i]);// если в printf ‘%c’,то i выводится как //символ. } } 12. Ввести строку. Написать функцию, которая получает данную строку и выводит на экран результатов каждое слова с новой строки. Например, если ввели Москва столица России!!! 123 456, то получаем Москва столица России!!! Массив строк
char array[3][50]; объявляется двумерный массив array, состоящий из трех строк по 50 байт. Примеры:
#include<stdio.h> Void main() { char string[5][20]; Int i; for(i=0;i<5;i++) { printf("Строка %d\n",i+1); gets(string[i]); } for(i=0;i<5;i++) puts(string[i]); }
#include<stdio.h> #include<string.h> Void main() { char string[5][20],buf[20]; Int i,j,k; for(i=0;i<5;i++) { printf("Строка %d\n",i+1); gets(string[i]); } for(i=0;i<4;i++) { for(k=i,j=i+1;j<5;j++) if(strcmp(string[k],string[j])>0) k=j; strcpy(buf,string[i]); strcpy(string[i],string[k]); strcpy(string[k],buf); } puts(""); for(i=0;i<5;i++) puts(string[i]); }
#include<stdio.h> Void main() { char m[5][100],*s; int n[5],i; for(i=0;i<5;i++) scanf("%s",m[i]); for(i=0;i<5;i++) { for(s=m[i],n[i]=0;*s;s++) { n[i]*=10; n[i]+=*s-'0'; } } puts(""); for(i=0;i<5;i++) printf("%d\n",n[i]);} Не нашли, что искали? Воспользуйтесь поиском:
|