Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


<string.h>: Для работы со строками

Детальное Описание

#include <string.h> 

Строковые функции исполняют, строковые операции на NULL конца строки.

Примечание:

Если Вы работаете со строками в программном пространстве (flash), следует использовать строковые функции, описанные в <avr/pgmspace.h>: Утилиты программного пространства.

 

 

Макроопределение

#define 

_FFS(x)

 

Функции

int 

ffs (int) __attribute__((const ))

int 

ffsl (long) __attribute__((const ))

int 

ffsll (long long) __attribute__((const))

void * 

memccpy (void *, const void *, int, size_t)

void * 

memchr (const void *, int, size_t) __ATTR_PURE__

int 

memcmp (const void *, const void *, size_t) __ATTR_PURE__

void * 

memcpy (void *, const void *, size_t)

void * 

memmem (const void *, size_t, const void *, size_t) __ATTR_PURE__

void * 

memmove (void *, const void *, size_t)

void * 

memrchr (const void *, int, size_t) __ATTR_PURE__

void * 

memset (void *, int, size_t)

int 

strcasecmp (const char *, const char *) __ATTR_PURE__

char * 

strcasestr (const char *, const char *) __ATTR_PURE__

char * 

strcat (char *, const char *)

char * 

strchr (const char *, int) __ATTR_PURE__

char * 

strchrnul (const char *, int) __ATTR_PURE__

int 

strcmp (const char *, const char *) __ATTR_PURE__

char * 

strcpy (char *, const char *)

size_t 

strcspn (const char *s, const char *reject) __ATTR_PURE__

size_t 

strlcat (char *, const char *, size_t)

size_t 

strlcpy (char *, const char *, size_t)

size_t 

strlen (const char *) __ATTR_PURE__

char * 

strlwr (char *)

int 

strncasecmp (const char *, const char *, size_t) __ATTR_PURE__

char * 

strncat (char *, const char *, size_t)

int 

strncmp (const char *, const char *, size_t) __ATTR_PURE__

char * 

strncpy (char *, const char *, size_t)

size_t 

strnlen (const char *, size_t) __ATTR_PURE__

char * 

strpbrk (const char *s, const char *accept) __ATTR_PURE__

char * 

strrchr (const char *, int) __ATTR_PURE__

char * 

strrev (char *)

char * 

strsep (char **, const char *)

size_t 

strspn (const char *s, const char *accept) __ATTR_PURE__

char * 

strstr (const char *, const char *) __ATTR_PURE__

char * 

strtok_r (char *, const char *, char **)

char * 

strupr (char *)


Документация макроопределения.

#define _FFS

(

 

 ) 

 

Этот макрос находит первый (самый младший) установленный бит во входном значении. Он похож на функцию ffs() но она кроме того оценивает аргумент во время компиляции, так что этот макрос должен быть применён только во время компиляции константа выражения где это уменьшит до константы непосредственно. Применение этого макроса к выражениям, которые не являются постоянными во время компиляции не рекомендуется, и может привести к огромному количеству сгенерированного кода.

Возвращения:

макрос _FFS () возвращает позицию первого (самого младшего) установленного бита, или 0 если нет установленных бит. Наименее значащий бит - позиция 1.


Документация на функции.

int ffs

(

int 

val

 ) 

const

Эта функция находит первый (самый младший) установленный бит во входном значении.

Возвращения:

Функция ffs () возвращает позицию первого (самого младшего) установленного бита, или 0 если нет установленных бит. Наименее значащий бит - позиция 1.

Note:

Для выражений, которые являются постоянными во время компиляции, рассмотрите использование макроса _FFS.

int ffsl

(

long 

 

 ) 

const

То же самое как ffs(), для аргумента типа long.

int ffsll

(

long 

long

 ) 

const

То же самое как ffs(), для аргумента типа long long.

void * memccpy

(

void * 

dest,

 

 

 

const void * 

src,

 

 

 

int 

val,

 

 

 

size_t 

len

 

 

)

 

 

 

Копирование области памяти.

Функция memccpy() копирует не больше, чем len байтов из области памяти, на которую указывает src, в область памяти на которую указывает dest, останавливая. При нахождении символа val копирование прекращается.

Возвращения:

Функция memccpy() возвращает указатель на следующий символ в dest после val или NULL, если символ val не был найден в первых len символах src.

Заголовок: void* memccpy(void *dest, const void *src, int val, size t len)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char dest [8];

void main(void)

{

memccpy(&dest, &src, ' ', 7);

printf("dest = %s", dest); //Результат: "dest = Source "

}

void * memchr

(

const void * 

src,

 

 

 

int 

val,

 

 

 

size_t 

len

 

 

)

 

 

 

Просмотр памяти для символа.

Функция memchr () просматривает первые len байтов области памяти, на которую указывает src, до символа val.

Возвращения:

Функция memchr ()Возвращает указатель на совпадающий байт или NULL, если символ val в заданной области памяти найден не был. Заголовок: void* memchr(void *src, int val, size_t len)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char c;

void main(void)

{

с = getchar(); //Прием символа от USART

if (memchr(src, c, strlen(src)) == NULL)

printf("Character %c not found", c);

}

 

int memcmp

(

const void * 

s1,

 

 

 

const void * 

s2,

 

 

 

size_t 

len

 

 

)

 

 

 

Сравнение областей памяти.

Функция memcmp () сравнивает первые len байтов областей памяти, которые указывают s1 и s2. сравниватель выполнен с использованием unsigned char операций.

Возвращения:

Функция memcmp () возвращает целое число <0, если sl< s2; 0, если sl = s2 или число > 0, если si > s2.

Заголовок: int memcmp(const void *sl, const void *s2, size t len)

Пример использования: #include <stdio.h>

#include <string.h>

char sl[] = "String 1";

char s2[] = "String 2";

int resl, res2;

void main(void)

{

resl = memcmp(sl, s2, 6);

res2 = memcmp(sl, s2, strlen(s1));

printf("resl=%d, res2=%d", resl, res2); //Результат: "resl=0, res2=-l"

}

Примечание:

Убедитесь, что сохранили результат в 16-и битной переменной, так как Вы можете получить неправильные результаты, если используете случайную работу без знака или случайную работу с усечением.

Предупреждение:

Эта функция mint8 несовместимая, хотя, если вас заботит только проверке равенства, эта функция должна быть безопасна в использовании.

void * memcpy

(

void * 

dest,

 

 

 

const void * 

src,

 

 

 

size_t 

len

 

 

)

 

 

 

Копирование области памяти.

Функция memcpy () копирует len байтов из области памяти, на которую ссылается src, в область памяти, на которую ссылается dest. Эти области памяти не могут пересекаться Используйте memmove() если области памяти действительно накладываются.

Возвращения:

Функция memcpy() возвращает указатель на dest.

Заголовок: void* memcpy(void *dest, const void *src, size t len)

Пример использования: #include <stdio.h>

#include <string.h> char

src[] = "Source string";

char dest[] = "Destination string";

void main(void)

{

memcpy(dest, src, strlen(src));

printf("dest = %s", dest); //Результат: "dest = Source stringtring"

}

void * memmem

(

const void * 

s1,

 

 

 

size_t 

len1,

 

 

 

const void * 

s2,

 

 

 

size_t 

len2

 

 

)

 

 

 

Функция memmem () находит начало первого возникновения подстроки s2 из длины len2 в области памяти s1 из длины len1.

Возвращения:

Функция memmem () возвращает указатель на начало подстроки, или NULL если подстрока не найдена. Если len2 = zero, функция возвращает s1.

void * memmove

(

void * 

dest,

 

 

 

const void * 

src,

 

 

 

size_t 

len

 

 

)

 

 

 

Копия области памяти.

Функция memmove () копирует len байтов из области памяти, на которую ссылается src, в область памяти, на которую ссылается dest. Эти области памяти могут пересекаться.

Возвращения:

Функция memmove () возвращает указатель на dest.

Заголовок: void* memmove(void *dest, const void *src, size t len)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char dest[] = "Destination string";

void main(void)

{

memcpy(dest, src, strlen(src));

printf("dest = %s", dest);

//Результат: "dest = Source stringtring"

}

void * memrchr

(

const void * 

src,

 

 

 

int 

val,

 

 

 

size_t 

len

 

 

)

 

 

 

Функция memrchr () похожа на функцию memchr(), но ищет байты len с конца, на которые указывает src вместо вперед от передней стороны. (Glibc, расширение ГНУ.)

Возвращения:

Функция memrchr () возвращает указатель на совпадающий байт или NULL, если символ val в заданной области памяти найден не был.

void * memset

(

void * 

dest,

 

 

 

int 

val,

 

 

 

size_t 

len

 

 

)

 

 

 

Заполнение памяти постоянным байтом.

Функция memset () заполняет первые len байтов из области памяти, на которую ссылается dest, байтом val.

Возвращения:

Функция memset ()возвращает указатель на dest.

Заголовок: void* memset(void *dest, int val, size_t len)

Пример использования: #include <stdio.h>

#include <string.h>

char dest[] = "Destination string";

void main(void)

{

memset(dest, 'X' , 11) ;

printf("dest = %s", dest);

//Результат: "dest = XXXXXXXXXXX string"

}

int strcasecmp

(

const char * 

s1,

 

 

 

const char * 

s2

 

 

)

 

 

 

Сравнение двух строк, без учёта регистра символов.

Функция strcasecmp () сравнивает две строки s1 и s2, игнорируя регистр символов.

Возвращения:

Функция strcasecmp()возвращает число <0, если sl < s2; 0, если s1 =s2 или число > 0, если s1 > s2. Последствие упорядочения, используемого strcasecmp () является этим если s1 является начальной подстрокой s2, тогда s1 как полагают, является "меньше чем" s2.

Заголовок: int strcasecmp (const char *sl, const char *s2)

Пример использования: #include <stdio.h>

#include <string.h>

char sl[] = "STRING 1";

char s2[] = "String 2";

int res;

void main(void)

{

res = strcasecmp(si, s2 printf("res=%d", res); //Результат: "res=-l"

}

char * strcasestr

(

const char * 

s1,

 

 

 

const char * 

s2

 

 

)

 

 

 

Функция strcasestr () находит первое возникновение подстроки s2 в строке s1. Эта функция похожа на strstr(), кроме того, что она игнорирует регистр алфавитных символов в поиске подстроки. (Glibc, GNU extension.)

Returns:

Функция strcasestr () возвращает указатель на начало подстроки, или NULL если подстрока не найдена. Если s2 points к строке нулевой длины, функция возвращает s1.

char * strcat

(

char * 

dest,

 

 

 

const char * 

src

 

 

)

 

 

 

Связь двух строк.

Функция strcat() добавляет строку src в конец строки dest. Строки не перекрываются. Строка dest должна иметь достаточную длину.

Возвращения:

Функция strcat () возвращает указатель на dest.

Заголовок: char* strcat(char *dest, const char *src)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "String 1";

char dest[20] = "String 2";

void main(void)

{

strcat(dest, src);

printf("dest=%s", dest); //Результат: "dest = String 2Stringl"

}

char * strchr

(

const char * 

src,

 

 

 

int 

val

 

 

)

 

 

 

Определение местоположения символа в строке.

Функция strchr () возвращает указатель на первое вхождение символа val в строке src. Если символ не найден, возвращается NULL.

Заголовок: char* strchr (char *src, char val)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "String 1";

unsigned char c;

void main(void)

{

с = getchar();

if (strchr(src, c) == NULL)

printf("Character %c not found", c)

}

char * strchrnul

(

const char * 

s,

 

 

 

int 

c

 

 

)

 

 

 

Функция strchrnul() похожа на strchr() за исключением того, что, если c не найден в s, то возвращает указатель на нулевой байт в конце s, а не NULL. (Glibc, GNU extension.)

Возвращения:

Функция strchrnul () возвращает указатель на согласованный символ, или указатель на нулевой байт в конце s если символ не найден, (то есть, s+strlen(s)).

int strcmp

(

const char * 

s1,

 

 

 

const char * 

s2

 

 

)

 

 

 

Сравнение двух строк.

Функция strcmp () сравнивает две строки s1 и s2.

Возвращения:

Функция strcmp () возвращает число <0, если sl< s2; 0, если sl=s2 или число > 0, если s1 > s2.

Заголовок: int strcmp(const char *sl, const char *s2)

Пример использования: #include <stdio.h>

#include <string.h>

char sl[] = "String 1";

char s2[] = "String 2";

int res;

void main(void)

{

res = strcmp(sl, s2);

printf("res=%d, res); // "res=-l"

}

char * strcpy

(

char * 

dest,

 

 

 

const char * 

src

 

 

)

 

 

 

Копирование строки.

Функция strcpy () копирует src в dest с учетом символа завершения строки "\0" Соответствующие области памяти не могут пересекаться.

Возвращения:

Функция strcpy () функция возвращает указатель на dest .

Заголовок: char* strcpy(char *dest, const char *src)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char dest[] = "Destination string";

void main(void)

{

strcpy(dest, src);

printf("dest = %s", dest);

//Результат: "dest = Source string\0ring"

}

Примечание:

Если строка адресата strcpy() не достаточно большая (то есть если программист был глуп/ленив, и был не в состоянии проверить размер перед копированием) то может что ни будь случиться. Переполнение установленных длин строки - любимая методика взломщика программной защиты.

size_t strcspn

(

const char * 

s,

 

 

 

const char * 

reject

 

 

)

 

 

 

Функция strcspn () вычисляет длину начальной доли s который состоит полностью из символов не в reject.

Возвращения:

Функция strcspn () возвращает число символов в начальной доле s которые не находятся в строке reject. Нуль окончания не не считают частью строки.

size_t strlcat

(

char * 

dst,

 

 

 

const char * 

src,

 

 

 

size_t 

siz

 

 

)

 

 

 

Конкатенирование двух строк.

Добавляет строку src в конец строки dst размером siz (в отличие от strncat(), siz - полный размер dst, а не пространство слева). Не более siz-1 символов будет скопировано. Всегда заканчивается NULL (если siz <= strlen(dst)).

Возвращения:

Функция возвращает значение strlen(scr) + MIN(siz, strlen(initial dist). Если возвращаемое значение >= siz, строка урезается.

Заголовок: size_t strlcat(char *dest, const char *src, size t siz)

Пример использования: #include <stdio.h>

#include <string.h> char src[] = "String 1";

char destf[1l] = "String 2";

void main(void)

{

strlcat(dest, src, 14);

printf("dest = %s", dest); //Результат: "dest = String 2Str", - в //dest поместились только 3 символа }

size_t strlcpy

(

char * 

dst,

 

 

 

const char * 

src,

 

 

 

size_t 

siz

 

 

)

 

 

 

Копирование строки.

Копирует строку src в строку dest размером siz (с учетом символа конца строки "\0").

Возвращения:

Функция strlcpy() возвращает значение strlen(src). Если возвращаемое значение >= siz, строка урезается.

Заголовок: size_t strlcpy(char *dest, const char *src, size t siz)

Описание:.

Пример использования: #include <stdio.h>

#include <string.h> char src[] = "Source string";

char dest[] = "Destination string";

void main(void)

{

strlcpy(dest, src, strlen(src));

printf("dest = %s", dest); //Результат: "dest = Source string\0ring"

}

 

size_t strlen

(

const char * 

src

 ) 

 

Вычисление длины строки.

Функция strlen() возвращает количество символов в src, не включая символ конца строки "\0".

Заголовок: int strlen (const char *src)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char c;

void main(void)

{

с = getchar(); //Прием символа от USART

if (memchr(src, c, strlen(src)) == NULL)

printf("Character %c not found", c);

}

 

char * strlwr

(

char * 

s

 ) 

 

Конвертирование строки в строчные буквы.

Функция strlwr ()переводит символы строки s в нижний регистр и возвращает указатель на полученную строку. Конвертируются только алфавитные символы [A.. Z] . Неалфавитные символы не изменяются.

Returns:

Функция strlwr () возвращает указатель на конвертированную строку.

Пример использования: #include <stdio.h>

#include <string.h>

char s[] = "Source STRING";

void main(void)

{

strlwr(s);

printf("s = %s", s); //Результат: "s = source string"

}

int strncasecmp

(

const char * 

s1,

 

 

 

const char * 

s2,

 

 

 

size_t 

len

 

 

)

 

 

 

Сравнение двух строк, игнорируя регистр.

Функция strncasecmp() подобна strcasecmp(), но сравнивает только первые len символов без учета регистра.

Returns:

Функция strncasecmp () возвращает число <0, если sl< s2; 0, если sl=s2 или число > 0, если s1 > s2

Заголовок: int strncasecmp (const char *sl, const char *s2, size t len)

Пример использования: #include <stdio.h>

#include <string.h> char sl[] = "STRING 1";

char s2[] = "String 2"; int res;

void main(void)

{

res = strncasecmp(s1, s2, 6);

printf("res=%d", res); // "res=0"

}

 

char * strncat

(

char * 

dest,

 

 

 

const char * 

src,

 

 

 

size_t 

len

 

 

)

 

 

 

Concatenate two strings.

The function strncat() подобна strcat(), добавляет первые len символов строки src в конец строки dest. Строки не могут перекрываться, и строка-приемник должна иметь достаточную длину.

Возвращения:

Функция strncat() возвращает указатель на dest.

Заголовок: char* strncat(char *dest, const char *src, size t len)

Пример использования: #include <stdio.h>

#include <string.h> char src[] = "String 1";

char dest[20] = "String 2";

void main(void)

{

strncat(dest, src, 3);

printf("dest=%s", dest); //Результат: "dest = String 2Str"

}

int strncmp

(

const char * 

s1,

 

 

 

const char * 

s2,

 

 

 

size_t 

len

 

 

)

 

 

 

Сравнение двух строк.

Функция strncmp() похожа на функцию strcmp(), но сравнивает только первые len символов строк s1 и s2.

Возвращения:

Функция strncmp () возвращает число <0, если sl< s2; 0, если sl=s2 или число > 0, если s1 >s2.

Заголовок: int strncmp(const char *sl, const char *s2, unsigned char len)

Пример использования: #include <stdio.h>

#include <string.h>

char sl[] = "String 1";

char s2[] = "String 2";

int res;

void main(void)

{

res = strncmp(sl, s2, 6);

printf("res=%d, res); //Результат: "res=0"

}

char * strncpy

(

char * 

dest,

 

 

 

const char * 

src,

 

 

 

size_t 

len

 

 

)

 

 

 

Копирование строки.

Функция strncpy () подобна функции strcpy (), за исключением того, что копирует len символов строки src в строку dest с учетом символа завершения строки "\0" Соответствующие области памяти не могут пересекаться.

В случае, если длина src - меньше чем это n, остаток от dest дополнятся с пустыми указателями.

Возвращения:

Функция strncpy () возвращает указатель на строку адресата dest.

Заголовок: char* strncpy(char *dest, const char *src, unsigned char len)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "Source string";

char dest[] = "Destination string";

void main(void)

{

strncpy(dest, src, 7);

printf("dest = %s", dest); //Результат: "dest = Source tion string"

}

size_t strnlen

(

const char * 

src,

 

 

 

size_t 

len

 

 

)

 

 

 

Определение длины строки установка размера.

Функция strnlen возвращает количество символов в src, не включая символ конца строки "\0", но не больше, чем len.

Заголовок: size t strnlen(const char *src, size t len)

Пример использования: #include <stdio.h>

#include <string.h>

char s1[ ] = "String 1";

char s2[ ] = "String 2 - long";

char 11, 12;

void main(void)

{

11 = strnlen(sl, 10); //11 = 8

12 = strnlen(s2, 10); //12 = 10 printf("ll=%d, 12=%d", 11, 12);

}

char * strpbrk

(

const char * 

s,

 

 

 

const char * 

accept

 

 

)

 

 

 

Функция strpbrk () определяет местонахождение первого возникновения в строке s любого из символов строки accept.

Возвращения:

Функция strpbrk () возвращает указатель на символ в s который соответствует одному из символов в accept, или NULL iесли никакой такой символ не найден. Нуль конца строки не считается частью строки: если один или оба параметра пусты, результат будет NULL.

char * strrchr

(

const char * 

src,

 

 

 

int 

val

 

 

)

 

 

 

Определение местонахождения символа в строке.

Функция strrchr () возвращает указатель на последнее возникновение символа val в строке src. Если символ не найден, возвращается NULL. Здесь "символ" означает "байт" - эти функции не работают с широкими или многобайтными символами.

Заголовок: char* strrchr (char *src, char val)

Пример использования: #include <stdio.h>

#include <string.h>

char src[] = "String 1";

unsigned char c;

void main(void)

{

с = getchar() ;

if (strrchr(src, c) == NULL)

printf("Character %c not found", c);

}

char * strrev

(

char * 

s

 ) 

 

Описание: Возвращает строку, обратную строке s.

Пример использования: #include <stdio.h>

#include <string.h>

char sl[] = "0123456789";

void main(void)

{

strrev(sl); //s1 = "9876543210"

printf("%s", si);

}

char * strsep

(

char ** 

sp,

 

 

 

const char * 

delim

 

 

)

 

 

 

Заголовок: char* strsep (char *sp,- const char *delim)

Описание: Находит в строке sp первое вхождение любого символа из строки delim и заменяет его символом "\0". Адрес следующего символа после найденного разделителя присваивается указателю sp. Функция возвращает указатель на исходное значение sp.

Пример использования: #include <stdio.h>

#include <string.h>

char s[] = "April 18, 2006";

char delim[] = ",-";

void main(void)

{

strsep(s, delim); //s=" 2006" printf("The year is %s", s+1);

}

size_t strspn

(

const char * 

s,

 

 

 

const char * 

accept

 

 

)

 

 

 

Функция strspn () вычисляет длину начальной доли s которая состоит полностью из символов accept.

Возвращения:

Функция strspn () возвращает число символов в начальной доле s которые состоят только из символов accept. Нуль конца строки не рассматривают как часть строки.

char * strstr

(

const char * 

s1,

 

 

 

const char * 

s2

 

 

)

 

 

 

Заголовок: char* strstr (char *sl, char *s2)

Описание: Ищет первое вхождение подстроки s2 в строке s1 (символы "\0" не учитываются). Возвращает указатель на начало подстроки, или NULL, если подстрока не найдена. Если s2 указывает на строку нулевой длины, возвращается s1

Пример использования: #include <stdio.h>

#include <string.h>

char sl[ ] = "Red, Green, Blue"; char s2[1] = "Green";

char *p;

void main(void)

{

p = strstr(sl, s2);

printf("New string", p); //"Green, Blue"

}

char * strtok_r

(

char * 

string,

 

 

 

const char * 

delim,

 

 

 

char ** 

last

 

 

)

 

 

 

Заголовок: char* strtok(char *s, char const *delim, char *last)

Описание: Просматривает строку s в поиске первого символа, не входящего в строку delim. При этом предполагается, что s1 состоит из последовательности подстрок, разделенных символами из строки delim. Первый вызов функции вернет указатель на первый символ-разделитель, после которого в строке будет вставлен символ "\0". Последующие вызовы функции будут возвращать следующие подстроки со вставкой вместо разделителя символа "\0" до тех пор, пока не будут просмотрены все разделители. После этого возвращается NULL, lastэто пользовательская строка, которая должна оставаться неизменной.

Пример использования: #include <stdio.h>

#include <string.h>

char s[] = "(050)111-1111";

char delim[] = "()-";

void main(void)

{

char area_code[4];

char *prefix;

char *postfix;

strcpy(area_code,strtok_r(s,delim,NULL)

prefix = strtok(0, delim, NULL);

postfix = strtok(0, delim, NULL);

printf("Area code: %s\n\r", area_code);

printf("Prefix: %s\n\r", prefix);

printf("Postfix: %s\n\r", postfix);

}

char * strupr

(

char * 

s

 ) 

 

Заголовок: char* strupr(char *s)

Описание: Переводит символы строки s в верхний регистр и возвращает указатель на полученную строку.

Пример использования: #include <stdio.h>

#include <string.h>

char s[ ] = "Source STRING";

void main(void)

{

strupr(s);

printf("s = %s", s);

//Результат: "s = SOURCE STRING"

}

Hosted by uCoz