پاس دادن رشته به تابع

ارسال رشته‌ها به توابع، تغییر رشته داخل تابع و الگوهای کاربردی

پاس دادن رشته به تابع

رشته چون آرایه است، هنگام ارسال به تابع آدرس آن ارسال می‌شود. پس تابع می‌تواند رشته اصلی را تغییر دهد:

void printString(char str[]) {
    printf("%s", str);
}

void toUpper(char str[]) {
    for (int i = 0; str[i] != \x27\x5c0\x27; i++) {
        if (str[i] >= \x27a\x27 && str[i] <= \x27z\x27) {
            str[i] = str[i] - 32;  // تبدیل به بزرگ
        }
    }
}

مثال: تابع طول رشته

int stringLength(char str[]) {
    int len = 0;
    while (str[len] != \x27\x5c0\x27) {
        len++;
    }
    return len;
}

مثال: شمارش حروف صدادار

int countVowels(char str[]) {
    int count = 0;
    for (int i = 0; str[i] != \x27\x5c0\x27; i++) {
        char c = tolower(str[i]);
        if (c == \x27a\x27 || c == \x27e\x27 || c == \x27i\x27 || c == \x27o\x27 || c == \x27u\x27) {
            count++;
        }
    }
    return count;
}

مثال: معکوس کردن رشته

void reverseString(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
}

const برای محافظت

اگر نمی‌خواهید تابع رشته را تغییر دهد، پارامتر را const کنید:

void printOnly(const char str[]) {
    // str[i] = \x27X\x27;  // ❌ خطای کامپایل
    printf("%s", str);      // ✅ فقط خواندن
}

نکات مهم

این مبحث بخشی از دوره آموزش کامل زبان C است.

ابزارهای مرتبط