روش سوم برای دریافت طول یک رشته به شرح زیر است:

3) کافیست حجم اشغال شده رم را توسط رشته به کمک اپراتور sizeof برگردانیم:

char str[] = "Hello World!";

return sizeof (str) - 1;

 دلیل اینکه یک مقدار از مقدار برگشتی کم می کنیم این است که یک char خالی به تنهایی یک بایت از حافظه را اشغال می کند در صورتی که این مقدار در طول رشته محاسبه نمی شود.

 

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

در این تابع فضاهای خالی تنها یک بار محاسبه میشوند یعنی طول رشته "a          b" را مقدار 3 خروجی میدهد.

    int len = 0;

    for (int i = 0; i < sizeof (str) - 1; i++)
    {

    if (str[i] == 32) // کد اسکی فضای خالی برابر با 32 می باشد
    {
        int i2 = i;
        for ( ; str[i2] == 32; i2++); // تعداد فضاهای خالی بعدی را محاسبه کرده و به متغیر حلقه اصلی می افزاید تا از دوباره شماری توسط حلقه اصلی جلوگیری کند
        i = i2;
        len ++;
    }
    
        len ++;
    }

 


منبع آن وبلاگ cppdev.blog.ir می باشد.