توابع رشته ای در برنامه نویسی C

رتبه: 5 ار 5 رای SSSSS
توابع
نویسنده: میلاد حیدری زمان مطالعه 2 دقیقه
Banner Image

در این مقاله با نحوه کار رشته ها در برنامه نویسی C با استفاده از توابع کتابخانه ای مانند gets()، puts() ، strlenو … آشنا خواهید شد و همچنین نحوه دریافت رشته از کاربر و عملیات مرتبط روی آن را یاد خواهید گرفت.

اغلب باید رشته ها را با براساس نیاز مسئله دستکاری کنید و در بیشتر مواقع، اگر نگوییم همیشه، دستکاری رشته می تواند به صورت دستی انجام شود اما این منجر به افزایش پیچیدگی و بزرگ شدن برنامه خواهد شد.

برای حل این مسئله، زبان C توابع زیادی برای مدیریت رشته ها در کتابخانه استاندارد “string.h” فراهم کرده است.

در جدول زیر چند تابع رشته ای پرکاربرد معرفی شده است:

عملکرد تابع تابع
طول رشته را محاسبه می کند.

strlen()

یک رشته را در رشته دیگری کپی می کند.

strcpy()

دو رشته را به هم متصل می کند.

strcat()

دو رشته را با هم مقایسه می کند.

strcmp()

تمام حروف رشته را به حروف کوچک تبدیل می کند.

strlwr()

تمام حروف رشته را به حروف بزرگ تبدیل می کند.

strupr()

توابع رشته ای در فایل هدر “string.h” تعریف شده اند.

#include <string.h>

()gets و ()puts

()gets و ()puts دو تابع رشته ای هستند که به ترتیب برای دریافت رشته از کاربر و نمایش آن مورد استفاده قرار می گیرند.

#include<stdio.h>

int main()

{

char name[30];

printf(“Enter name: “);

gets(name); //تابع گرفتن رشته از ورودی

printf(“Name: “);

puts(name); // تابع نمایش رشته در خروجی

return 0;

}

نکته: گرچه توابع ()gets و ()puts برای مدیریت رشته ها استفاده می شوند اما هر دو در فایل هدر “stdio.h” تعریف شده اند.

profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

5 نظر درباره «توابع رشته ای در برنامه نویسی C»

  • امید
    امید آیا این دیدگاه مفید بود ؟

    سلام برنامه ای میخوام که دورشته عددی ۱۰رقمی را از ورودی گرفته حاصل جمع وتفریق انهارا در خروجی چاپکنه

    پاسخ
    • محمدحسین شالچیان

      سلام
      این برنامه ای که میدم خط اولش مبنا رو از 2 تا 16 میگیره و در خط بعدی دو عدد و علامت منها یا مثبت رو میگیره و حساب میکنه
      مثال:
      10
      24 + 36

      #include
      #include
      #include
      #define max(a, b) ((a &gt; b) ? a : b)
      void operation(char n1[10000], char n2[10000], int mabna, char op){
      int a[10000] = {0}, b[10000] = {0};
      int j = 0;
      int n = strlen(n1), m = strlen(n2);
      for(int i = max(n, m) - n + 1; i &lt;= max(n, m); i++){
      if(64 &lt; n1[j] &amp;&amp; n1[j] &lt; 71){
      a[i] = n1[j] - 55;
      }
      else if(47 &lt; n1[j] &amp;&amp; n1[j] &lt; 58){
      a[i] = n1[j] - 48;
      }
      j++;
      }
      j = 0;
      for(int i = max(n, m) - m + 1; i &lt;= max(n, m); i++){
      if(64 &lt; n2[j] &amp;&amp; n2[j] &lt; 71){
      b[i] = n2[j] - 55;
      }
      else if(47 &lt; n2[j] &amp;&amp; n2[j] 0; i--){
      result[i-1] = (a[i] + b[i] + result[i]) / mabna;
      result[i] = (a[i] + b[i] + result[i]) % mabna;
      }

      if(result[0])
      printf(%d, result[0]);

      int i = 0;
      for(; result[i] == 0; i++);
      for(; i 9)
      printf(%c, result[i] + 55);
      else
      printf(%d, result[i]);
      }
      }
      else{
      int result[10000] = {0};
      for(int i = max(n, m); i &gt; 0; i--){
      if(a[i] &gt;= b[i])
      result[i] = (a[i] - b[i]);
      else{
      a[i-1]--;
      result[i] = mabna + a[i] - b[i];
      }
      }
      int i = 0;
      for(; result[i] == 0; i++);
      for(; i 9)
      printf(%c, result[i] + 55);
      else
      printf(%d, result[i]);
      }
      }
      }

      int main(){
      int mabna;
      char a[10000], b[10000], result[10001], op;
      scanf(%d, &amp;mabna);
      scanf(%s %c %s, &amp;a, &amp;op, &amp;b);
      operation(a, b, mabna, op);

      return 0;
      }

  • فاطمه
    فاطمه آیا این دیدگاه مفید بود ؟

    سلام برنامه ای میخام ب زبان cکه دو رشته را از ورودی خوانده و آن دو را باهم مقایسه کند

    پاسخ
    • مهدی

      با این دستور میشه مقایسه کردstrcmp() اگه باهم برابر باشن مقدار صفر برمیگردونه

  • Yegane
    Yegane آیا این دیدگاه مفید بود ؟

    سلام برنامه ای میخام که یک رشته رو از کاربر بگیره و جروف بزرگ و کوچکشو جداگانه هرکدوم در یک خط چاپ کنه

    پاسخ
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید