دو گروه از توابع رشته ای وجود داردکه در سر فایل <string.h> تعریف شده اند. گروه اول دارای نام هایی هستند که با str شروع شده اند و گروه دوم نام هایی دارند که با mem شروع شده اند. 


void * memchr (const void *str, int c, size_t n);

memchr، كاراكتری را در رشته جستجو و محل اولين وقوع آن را مشخص می كند. اگر اين كاراكتر پيدا شد، شماره آن محل را در اشاره‌گر كاراكتری قرار می دهد وگرنه كاراكتر تهی را در اشاره‌گر منظور می كند. str به آرايه‌ای اشاره می كند كه عمل جستجو بايد در آن انجام شود و c كاراكتری را مشخص می كند كه بايد در آرايه جستجو شود. count محلی را در آرايه مشخص می كند كه عمل جستجو بايد از ابتدای آرايه تا آن محل انجام شود.

#include <stdio.h>
#include <string.h>

int main (){
  char * pch;
  char str[] = "Example string";

  pch = (char*) memchr (str, 'p', strlen(str));

  if (pch!=NULL) printf ("'p' found at position %d.\n", pch-str+1);
  else           printf ("'p' not found.\n");
}​

OUTPUT:

 'p' found at position 5.​

int memcmp (const void *str1, const void *str2, size_t n);

 n کاراکتر اول str1 و str2 را با هم مقایسه میکند.

| اگر n کاراکتر اول، این دو رشته، با هم برابر باشد، مقدار صفر برمی‌گرداند.

| اگر n کاراکتر اول str1 بزرگتر از str2 باشد، مقدار مثبت برمی‌گرداند.

| اگر n کاراکتر اول str1، کوچکتر از str2 باشد، مقدار منفی برمی‌گرداند. 

/* memcmp example */
#include <stdio.h>
#include <string.h>

int main (){
  char buffer1[] = "DWgaOtP12df0";
  char buffer2[] = "DWGAOTP12DF0";

  int n;

  n=memcmp ( buffer1, buffer2, sizeof(buffer1) );

  if (n>0)      printf ("'%s' is greater than '%s'.\n",buffer1,buffer2);
  else if (n<0) printf ("'%s' is less than '%s'.\n",buffer1,buffer2);
  else          printf ("'%s' is the same as '%s'.\n",buffer1,buffer2);
}

OUTPUT:

 'DWgaOtP12df0' is greater than 'DWGAOTP12DF0'.

void * memcpy (void *str1, const void *str2, size_t n);

 در این تابع، n كاراكتر اول رشته str2 در n محل اول رشته str1 كپی می شوند

#include <string.h>
#include <stdio.h> /* for printf */

void main (void) {
  char src1 [100] = "Copy this string to dst1";
  char dst1 [100];
  char *p;

  p = memcpy (dst1, src1, sizeof (dst1));
  printf ("dst = \"%s\"\n", p);
}

OUTPUT:

dst = "Copy this string to dst1"

void * memmove (void *str1, const void *str2, size_t n);

n بایت را از str2 به str1 کپی می کند.

#include <string.h>
#include <stdio.h> /* for printf */

void main (void) {
  static char buf [] = "This is line 1 "
                       "This is line 2 "
                       "This is line 3 ";

  printf ("buf before = %s\n", buf);
  memmove (&buf [0], &buf [16], 32);
  printf ("buf after = %s\n", buf);
}

OUTPUT:

buf before = This is line 1 This is line 2 This is line 3 
buf after = his is line 2 This is line 3

void * memset (void *str, int c, size_t n);

 در n کاراکتر اولِ str، مقدار c را جایگذاری میکند.

* در نوشتن '0\' در قسمت int c  می توان کل متغیر را پاک کرد یا مقدار صفر داد.

#include <string.h>
#include <stdio.h> 

void main (void) {
  char buf [10]="salaam";

  memset (buf, 'A', sizeof (buf));
  printf("now buf is: %s",buf);
}

OUTPUT:

now buf is: AAAAAAAAAA

char *strcat (char *str1, const char *str2);

جهت اضافه کردن (چسباندن) رشته str2 به انتهای رشته str1 استفاده می شود.

#include <string.h>
#include <stdio.h> 

void main (void) {

  char buf [21];
  char s [] = "Test String";

  strcpy (buf, s);
  strcat (buf, " #2");

  printf ("new string is %s\n", buf);
}

OUTPUT:

new string is Test String #2

char *strchr (const char *str, int c);

اولین محل وقوع کاراکتر c را در رشته str پیدا می کند. نکته ای که در کار با تابع ()strchr می بایست به آن توجه داشت این است که این تابع اندیس (شماره) خانه مورد نظر را برنمی گرداند. خروجی این تابع یک اشاره گر است. یعنی آدرس خانه ای را بر می گرداند که کاراکتر موردنظر در آن خانه قرار گرفته است.

#include <string.h>
#include <stdio.h> 

void main (void) {
 char *s;
  char buf [] = "This is a test";

  s = strchr (buf, 't');

  if (s != NULL) printf ("found a 't' at %s\n", s);
}

OUTPUT:

found a 't' at test

int strcmp (const char *str1, const char *str2);

دو رشته کاراکتری را با هم مقایسه می کند. اگر رشته str1 از رشته str2 کوچکتر باشد (به لحاظ ترتیب الفبایی)، یک مقدار منفی برگشت داده می شود. چنانچه دو رشته با هم برابر باشند، مقدار برگشتی صفر است و در نهایت چنانچه رشته str1 از رشته str2 بزرگتر باشد، یک عدد مثبت برگردانده می شود.

#include <string.h>
#include <stdio.h> 

void main (void) {
char buf1 [] = "Bill Smith";
  char buf2 [] = "Bill Smithy";
  char i;

  i = strcmp (buf1, buf2);

  if (i < 0)       printf ("buf1 < buf2\n");
  else if (i > 0)  printf ("buf1 > buf2\n");
  else             printf ("buf1 == buf2\n");
}

OUTPUT:

buf1 < buf2

int strcoll (const char *str1, const char *str2);

 این تابع حرف به حرف، دو رشته را مقایسه میکند. اگر هر دو رشته عینا شبیه هم بودند، صفر برمیگرداند. اگر حرف ارزش str1 بزرگتر بوده،مقدار مثبت و اگر حرف ارزش str2 بزرگتر باشد، مقداری منفی برمیگرداند.

#include <stdio.h>
#include <string.h>
  
int main(){
    char str1[10];
    char str2[10];
    int ret;
  
    strcpy(str1, "geeksforgeeks");
    strcpy(str2, "GEEKSFORGEEKS");
  
    ret = strcoll(str1, str2);
  
    if (ret > 0)      printf("str1 is greater than str2");
    else if (ret < 0) printf("str1 is lesser than str2");
    else              printf("str1 is equal to str2");
}

OUTPUT:

str1 is greater than str2

char *strcpy (char *str1, const char *str2);

جهت کپی کردن یک رشته بر روی رشته دیگر استفاده می شود. این تابع رشته دوم را روی رشته اول کپی می کند.

#include <stdio.h>
#include <string.h>
  
int main(){
  char buf [21];
  char s [] = "Test String";

  strcpy (buf, s);
  printf ("new string is %s\n", buf);
}

OUTPUT:

new string is Test String

size_t strcspn (const char *str1, const char *str2);

 در str1 جستجو کرده و محل اولین حرف یافت شده در str2 را برمیگرداند.

#include <stdio.h>
#include <string.h>
  
int main(){
 char str[] = "fcba73";
  char keys[] = "1234567890";
  int i;
  i = strcspn (str,keys);
  printf ("The first number in str is at position %d.\n",i+1);
}

OUTPUT:

The first number in str is at position 5.

size_t strlen (const char *str);

تعداد کاراکترهای موجود در رشته str را محاسبه می کند (بدون در نظر گرفتن NUL) به عبارت دیگر کار این تابع محاسبه طول یک رشته کاراکتری است.

#include <stdio.h>
#include <string.h>
  
int main(){
char buf [] = "Find the length of this string";
   int len;

  len = strlen (buf);
  printf ("string length is %d\n", len);
}

OUTPUT:

string length is 30

char *strncat (char *__restrict, const char *__restrict, size_t n);

جهت اضافه کردن (چسباندن) n کاراکتر اول یک رشته به انتهای یک رشته دیگر استفاده می شود. این تابع n کاراکتر اول پارامتر دوم را به انتهای پارامتر اول اضافه می کند.

example

OUTPUT:

OUT

int strncmp (const char *str1, const char *str2, size_t n);

 

example

OUTPUT:

OUT

char *strncpy (char *__restrict, const char *__restrict, size_t n);

جهت کپی کردن n کاراکتر اول یک رشته بر روی رشته دیگر استفاده می شود. این تابع n کاراکتر اول پارامتر دوم را روی n کاراکتر اول پارامتر اول کپی می کند.

example

OUTPUT:

OUT

char *strpbrk (const char *str1, const char *str2);

 

example

OUTPUT:

OUT

char *strrchr (const char *str, int c);

آخرین محل وقوع کاراکتر c را در رشته str پیدا می کند.

example

OUTPUT:

OUT

size_t strspn (const char *str1, const char *str2);

 

example

OUTPUT:

OUT

char *strstr (const char *str1, const char *str2);

 رشته str2 را در رشته str1 جستجو میکند و یک اشاره گر برمی گرداند. مثلا می خواهیم بدانیم که "سوزن" در "انبار کاه" وجود دارد یا خیر؟!

/* strstr example */
#include <stdio.h>
#include <string.h>

int main (){
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");
  if (pch != NULL)
    strncpy (pch,"sample",6);
  puts (str);
  return 0;
}

OUTPUT:

This is a sample string

char *strtok (char *str, const char *delim);

 

example

OUTPUT:

OUT

size_t strxfrm (char *str1, const char *str2, size_t n);

 

example

OUTPUT:

OUT

int strcoll_l (const char *str1, const char *str2, locale_t);

 

example

OUTPUT:

OUT

char *strerror_l (int c, locale_t);

 

example

OUTPUT:

OUT

size_t strxfrm_l (char *__restrict, const char *__restrict, size_t n, locale_t);

 

example

OUTPUT:

OUT

char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);

 

example

OUTPUT:

OUT

int timingsafe_bcmp (const void *str1, const void *str2, size_t n);

 

example

OUTPUT:

OUT

int timingsafe_memcmp (const void *, const void *, size_t n);

 

example

OUTPUT:

OUT

void * memccpy (void *__restrict, const void *__restrict, int, size_t n);

 

example

OUTPUT:

OUT

void * mempcpy (void *, const void *str, size_t n);

 

example

OUTPUT:

OUT

void * memmem (const void *str1, size_t n, const void *str2, size_t n);

 

example

OUTPUT:

OUT

void * memrchr (const void *str, int c, size_t n);

 

example

OUTPUT:

OUT

void * rawmemchr (const void *str, int c);

 

example

OUTPUT:

OUT

char *stpcpy (char *__restrict, const char *__restrict);

 

example

OUTPUT:

OUT

char *stpncpy (char *__restrict, const char *__restrict, size_t n);

 

example

OUTPUT:

OUT

char *strcasestr (const char *str1, const char *str2);

 

example

OUTPUT:

OUT

char *strchrnul (const char *str, int c);

 

example

OUTPUT:

OUT

char *strdup (const char *str) __malloc_like __result_use_check;

 

example

OUTPUT:

OUT

char *_strdup_r (struct _reent *, const char *str);

 

example

OUTPUT:

OUT

char *strndup (const char *str, size_t n) __malloc_like __result_use_check;

 

example

OUTPUT:

OUT

char *_strndup_r (struct _reent *, const char *, size_t n);

 

example

OUTPUT:

OUT

char *strerror_r (int c, char *str, size_t n);

 

example

OUTPUT:

OUT

int strerror_r (int c, char *str, size_t n)

 

example

OUTPUT:

OUT

int __xpg_strerror_r (int c, char *str, size_t n);

 

example

OUTPUT:

OUT

char * _strerror_r (struct _reent *, int c1, int c2, int *);

 

example

OUTPUT:

OUT

size_t strlcat (char *, const char *str, size_t n);

 

example

OUTPUT:

OUT

size_t strlcpy (char *, const char *str, size_t n);

 

example

OUTPUT:

OUT

size_t strnlen (const char *str, size_t n);

 

example

OUTPUT:

OUT

char *strsep (char **, const char *str);

 

example

OUTPUT:

OUT

char *strnstr(const char *str1, const char *str2, size_t n) __pure;

 

example

OUTPUT:

OUT

char *strlwr (char *str);
char *strupr (char *str);

 با تابع strlwr تمام حروف رشته، به حروف کوچک تبدیل می شود و با دستور strupr تمام حروف رشته، به حروف بزرگ تبدیل میشود.

example

OUTPUT:

OUT

char *strsignal (int __signo);

 

example

OUTPUT:

OUT

int strtosigno (const char *__name);

 

example

OUTPUT:

OUT

int strverscmp (const char *str1, const char *str2);

 

example

OUTPUT:

OUT

نوشتن دیدگاه