پیدا کردن طول رشته با شرط اتمام رشته کاراکتر "r"

سلام من این سوال رو تو کتاب دیدم هرچی فکر کردم نتونستم بنویسمش ببینین شما میتونین
سوال : برنامه ای بنویسید که کاربر رشته را وارد کند و طول رشته برگشته شود (شرط اتمام رشته کاراکتر "r\" می باشد)
 

the_king

مدیرکل انجمن
اگر منظور شما دو کاراکتر "r\\" است که در هنگام تایپ کردن بصورت r\ نوشته می شود :

کد:
#include "stdio.h"
#include "conio.h"
#include "iostream.h"

int len(char *s)
{
    int i;
    for (i=0;((s[i]!='\\') || (s[i+1]!='r')) && s[i];i++);
    return i;
}

void main()
{
    char s[80];
    clrscr();
    gets(s);
    cout << len(s);
    getch();
}

ولی اگر منظور شما تک کاراکتر 'r\' است (Carriage Return) آنگاه :

کد:
#include "stdio.h"
#include "conio.h"
#include "iostream.h"

int len(char *s)
{
    int i;
    for (i=0;(s[i]!='\r') && s[i];i++);
    return i;
}

void main()
{
    char s[80];
    clrscr();
    gets(s);
    cout << len(s);
    getch();
}

در هر دو کد، برای اجتناب از Overflow ناخواسته، شرط [s[i برای پایان توسط کاراکتر null را اضافه کردم.
 
سلام دوست عزیز
دستت درد نکنه
من این رو هم پیدا کردم ولی جوابو با یک سری مشکل بدست میاره
فکر میکنید مشکلش چیه؟

کد:
 #include <stdio.h>
#include <conio.h>
void main()
{
    int i=0;
    while(getche()!='\r')
        i++;
    printf("\n%d",i);
}
 

the_king

مدیرکل انجمن
از نظر ساختار هیچ مشکلی نداره، مساله اینجا است که چون دریافت رشته بصورت کاراکتر-کاراکتر و بدون توجه به
Backspace و Delete و دکمه هایی نظیر چهار دکمه فلش چهار جهت اصلی انجام میشه، فشردن اینگونه کلید ها
کار محاسبه رو به هم می ریزه وگرنه در سایر موارد درست کار می کنه گو اینکه عملکردش مطابق با سوال شما نیست.

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

جدیدترین ارسال ها

بالا