در این مقاله با نحوه کار رشته ها در برنامه نویسی 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” تعریف شده اند.
5 دیدگاه. ارسال دیدگاه جدید
سلام برنامه ای میخوام که دورشته عددی ۱۰رقمی را از ورودی گرفته حاصل جمع وتفریق انهارا در خروجی چاپکنه
سلام
این برنامه ای که میدم خط اولش مبنا رو از 2 تا 16 میگیره و در خط بعدی دو عدد و علامت منها یا مثبت رو میگیره و حساب میکنه
مثال:
10
24 + 36
#include
#include
#include
#define max(a, b) ((a > 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 <= max(n, m); i++){
if(64 < n1[j] && n1[j] < 71){
a[i] = n1[j] – 55;
}
else if(47 < n1[j] && n1[j] < 58){
a[i] = n1[j] – 48;
}
j++;
}
j = 0;
for(int i = max(n, m) – m + 1; i <= max(n, m); i++){
if(64 < n2[j] && n2[j] < 71){
b[i] = n2[j] – 55;
}
else if(47 < n2[j] && 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 > 0; i–){
if(a[i] >= 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”, &mabna);
scanf(“%s %c %s”, &a, &op, &b);
operation(a, b, mabna, op);
return 0;
}
سلام برنامه ای میخام ب زبان cکه دو رشته را از ورودی خوانده و آن دو را باهم مقایسه کند
با این دستور میشه مقایسه کردstrcmp() اگه باهم برابر باشن مقدار صفر برمیگردونه
سلام برنامه ای میخام که یک رشته رو از کاربر بگیره و جروف بزرگ و کوچکشو جداگانه هرکدوم در یک خط چاپ کنه