سلام ، آیا این بازدید اول شماست ؟ یا
تبلیغات در این انجمن
×
+
سفارش تبلیغات
صفحه 2 از 5 اولیناولین 1234 ... آخرینآخرین
نمایش نتایج: از شماره 11 تا 20 از مجموع 49

موضوع: مثال هایی از توابع در زبان برنامه نویسی C

  1. #11
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    پیش فرض تابع lookfor_c (کاراکتر c را در رشته str جست و جو می کند)



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for free () malloc () */
    
    #define MXSZ 1024
    
    unsigned int lookfor_c_v1 (const char[], const int);
    unsigned int lookfor_c_v2 (const char[], const int);
    unsigned int lookfor_c_v3 (const char*, const int);
    
    int main ()
    {
       int c;
       char *str;
    
       c = 'A';
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       printf ("System: Looking for '%c' in %s ...\n", c, strcpy_v6 (str, "\"C_Programming_Language\""));
    
       if (lookfor_c_v3 (str, c) == 1)
          printf ("System: '%c' is found\n", c);
       else if (lookfor_c_v2 (str, c) != !0)
          printf ("System: '%c' is not found\n", c);
    
       free (str);
    
       return 0;
    }
    
    unsigned int lookfor_c_v3 (const char *str, const int c)
    {
       while (*str)
       {
          if (*str++ == c)
             return 1;
       }
    
       return 0;
    }
    
    unsigned int lookfor_c_v2 (const char str[], const int c)
    {
       unsigned long i = 0;
    
       while (str[i] != '\0')
       {
          if (str[i++] == c)
             return 1;
       }
    
       return 0;
    }
    
    unsigned int lookfor_c_v1 (const char str[], const int c)
    {
       unsigned long i;
    
       for (i = 0; str[i] != '\0'; i++)
       {
          if (str[i] == c)
             return 1;
       }
    
       return 0;
    }
    ویرایش توسط C89 : 19-01-2015 در ساعت 21:30

  2. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  3. #12
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Arrow تابع fillitoff - تابع strlen_v6 - تابع strcpy_v7

    • تابع fillitoff کاراکتر c را به n-کاراکتر اولِ رشته str کپی می کند.
    • تابع strlen_v6 طول رشته str را به دست می آورد.
    • تابع strcpy_v7 رشته اشاره شده توسط اشاره گر str1 را به رشته str2 کپی می کند.

    کد:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    unsigned long strlen_v6 (const char*);
    char *strcpy_v7 (char*, const char*);
    void *fillitoff (void*, const int, size_t);
    
    int main ()
    {
       int c1, c2;
       char *str;
    
       c1 = 'C';
       c2 = 99;
    
       str = (char*) malloc (25);
       fillitoff (str, '\0', sizeof (str));
    
       strcpy_v7 (str, "C Programming Language.");
       printf ("[%s]\n", str);
    
       str = (char*) realloc (str, 35);
       printf ("[This is the ", fillitoff (str, '\0', sizeof (str)));
    
       printf ("%s\n", strcpy_v7 (str, "C Programming Language tutorial.]"));
    
       printf ("[%s]\n", fillitoff (str, 'C', strlen_v6 (str)));
       printf ("[%s]\n", fillitoff (str, c1, strlen_v6 (str)));
       printf ("[%s]\n", fillitoff (str, c2, strlen_v6 (str)));
       printf ("[%s]\n", fillitoff (str, c2 = c1, strlen_v6 (str)));
       printf ("[%s]\n", fillitoff (str, 67, strlen_v6 (str)));
    
       fillitoff (str, '\0', sizeof (str));
       printf ("[%s]\n", str);
    
       free (str);
    
       return 0;
    }
    
    void *fillitoff (void *str, const int c, size_t length)
    {
       unsigned char *ch_str_ptr;
    
       ch_str_ptr = str;
    
       while (length > 0)
       {
          *ch_str_ptr++ = c;
          --length;
       }
    
       return (str);
    }
    
    char *strcpy_v7 (char *str1, const char *str2)
    {
       char *str1_ptr = str1;
    
       while (*str1++ = *str2++)
          ;
    
       return (str1_ptr);
    }
    
    unsigned long strlen_v6 (const char *str)
    {
       unsigned long i = 0;
    
       while (*str++)
          i++;
    
       return i;
    }

    ویرایش توسط C89 : 19-01-2015 در ساعت 21:59

  4. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  5. #13
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Arrow نسخه 3 و 4 تابع getline


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for free () malloc () */
    
    #define MXSZ 1024
    
    long getline_v4 (char*, long);
    char *getline_v3 (char*, long, unsigned int*);
    
    int main ()
    {
       char *str;
       unsigned int length;
    
       length = 0;
    
       str = (char*) malloc (MXSZ);
       fillitoff (str, '\0', MXSZ);
    
       printf ("%ld\n", getline_v4 (str, MXSZ));
    
       fillitoff (str, '\0', MXSZ);
    
       printf ("%s", getline_v3 (str, MXSZ, &length));
       printf ("%u\n", length);
    
       free (str);
    
       return 0;
    }
    
    long getline_v4 (char *str, long lim)
    {
       if (lim < 2)
          return -1;
    
       int c;
       char *str_ptr = str;
    
       while (--lim > 0 && (c = getchar ()) != EOF && c != '\n')
          *str++ = c;
    
       if (c == '\n')
          *str++ = c;
    
       return strlen_v6 (str_ptr);
    }
    
    char *getline_v3 (char *str, long lim, unsigned int *length)
    {
       if (lim < 2)
          return NULL;
    
       int c;
       char *str_ptr = str;
    
       while (--lim > 0 && (c = getchar ()) != EOF && c != '\n')
          *str++ = c, (*length)++;
    
       if (c == '\n')
          *str++ = c, ++(*length);
    
       return str_ptr;
    }

    ویرایش توسط C89 : 20-01-2015 در ساعت 19:37 دلیل: به درخواست ارسال کننده

  6. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  7. #14
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Lightbulb تمرین

    تابعی به نام reverse_str بنویسید که مقلوب رشته str را به دست آورد. برای مثال: ABCDEFG --> GFEDCBA یا 1234567 --> 7654321 یا +++/+ --> +/+++.
    تابع مذکور می بایست اشاره گری-به-رشته-str را برگشت دهد (return کند).


    کد:
    /* Function Prototype */
    char *reverse_str (char str[]);
    ویرایش توسط C89 : 18-01-2015 در ساعت 19:52

  8. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  9. #15
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Lightbulb تمرین

    • تابعی به نام binary_to_decimal بنویسید که اعداد بر مبنای 2 (Binary) را به اعداد بر مبنای 10 (Decimal Integer) نیز تبدیل کند.
    • تابعی به نام decimal_to_binary بنویسید که اعداد بر مبنای 10 (Decimal Integer) را به اعداد بر مبنای 2 (Binary) نیز تبدیل کند.
    • تابعی به نام binary_to_hexadecimal بنویسید که اعداد بر مبنای 2 (Binary) را به اعداد بر مبنای 16 (Hexadecimal) نیز تبدیل کند.
    • تابعی به نام hexadecimal_to_binary بنویسید که اعداد بر مبنای 16 (Hexadecimal) را به اعداد بر مبنای 2 (Binary) نیز تبدیل کند.
    • تابعی به نام decimal_to_hexadecimal بنویسید که اعداد بر مبنای 10 (Decimal Integer) را به اعداد بر مبنای 16 (Hexadecimal) نیز تبدیل کند.
    • تابعی به نام hexadecimal_to_decimal بنویسید که اعداد بر مبنای 16 (Hexadecimal) را به اعداد بر مبنای 10 (Decimal Integer) نیز تبدیل کند.





    • تابعی به نام reverse_d بنویسید که مقلوب اعداد صحیح مثبت و منفی را به دست آورد و برگشت دهد (مثال: 1109 9011 و 1109- 9011-). توجه کنید که تابع مذکور باید دارای حداکثر یک آرگومان از نوع int یا long (عدد صحیح) باشد:

    کد:
    /* Function Prototype */
    long reverse_d (long);


    • تابعی به نام strcmp بنویسید که دو رشته str1 و str2 را با یکدیگر مقایسه کند. توجه کنید که مقایسه رشته ها بر اساس کُد اَسکی آنها صورت می گیرد. برای مثال: کد اسکی کاراکتر a عدد 97 می باشد اما کد اسکی کاراکتر A عدد 65 می باشد. بنابراین، کاراکتر a نیز بزرگتر از A می باشد (97 بزرگتر از 65 می باشد). این تابع باید مقدار:


    1. 1 را در صورتی که رشته str1 بزرگتر از str2 بود نیز برگشت دهد.
    2. 1- را در صورتی که رشته str1 کوچکتر از str2 بود نیز برگشت دهد.
    3. 0 را در صورتی که رشته str1 مساوی با str2 بود نیز برگشت دهد.

    کد:
    /* Function Prototype */
    int strcmp (const char *str1, const char *str2);


    ویرایش توسط C89 : 18-01-2015 در ساعت 20:01

  10. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  11. #16
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Post نسخه 6 و 7 تابع scat و نسخه 7 تابع strlen


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define BUFFER_SIZE 1024
    
    char *scat_v6 (char*, const char*);
    unsigned long strlen_v7 (const char*, long);
    
    int main ()
    {
       char *buffer1;
       char *buffer2;
    
       buffer1 = (char*) malloc (BUFFER_SIZE);
       buffer2 = (char*) malloc (BUFFER_SIZE);
    
       fillitoff (buffer1, '\0', BUFFER_SIZE);
       fillitoff (buffer2, '\0', BUFFER_SIZE);
    
       strcpy_v7 (buffer1, "Hi. How's it going there,");
       strcpy_v7 (buffer2, " mate? I really miss you.");
    
       printf ("%s\n", scat_v6 (buffer1, buffer2));
    
       free (buffer1);
       free (buffer2);
    
       return (EXIT_SUCCESS);
    }
    
    char *scat_v6 (char *str1, const char *str2)
    {
       char *ptr_str1 = str1;
       unsigned long i = strlen_v7 (str1, 0);
    
       while (*(str1+i) = *str2++)
          ++i;
    
       return (ptr_str1);
    }
    
    unsigned long strlen_v7 (const char *str, long n)
    {
       unsigned long i = 0;
    
       while (*str++)
          i++;
    
       return (i > 0 && n > 0) ? (i-n) : (i);
    }



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MAX_SIZE 1024
    
    char *scat_v7 (char*, const char*);
    unsigned long strlen_v7 (const char*, long);
    
    int main ()
    {
       char *buffer;
    
       buffer = (char*) malloc (MAX_SIZE);
       fillitoff (buffer, '\0', sizeof (buffer));
    
       strcpy_v7 (buffer, "C_Programm");
       scat_v7 (buffer, "ing_Langu");
       printf ("%s\n", scat_v7 (buffer, "age"));
    
       free (buffer);
    
       return EXIT_SUCCESS;
    }
    
    char *scat_v7 (char *str1, const char *str2)
    {
       int i = strlen_v7 (str1, 0);
    
       while (str1[i++] = *str2++)
          ;
    
       return (str1);
    }
    
    unsigned long strlen_v7 (const char *str, long n)
    {
       unsigned long i = 0;
    
       while (*str++)
          i++;
    
       return (i > 0 && n > 0) ? (i-n) : (i);
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 15:26

  12. کاربران : 5 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  13. #17
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Post نسخه 4 تابع delete_c_po

    تابع fillitoff و تابع strcpy_v7


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MAX_SIZE 1024
    
    char *delete_c_po_v4 (char*, long, long);
    
    int main ()
    {
       char *buffer;
    
       buffer = (char*) malloc (MAX_SIZE);
       fillitoff (buffer, '\0', MAX_SIZE);
    
       strcpy_v7 (buffer, "C_Programming_Language");
       printf ("%s\n", buffer);
    
       printf ("%s\n", delete_c_po_v4 (buffer, 2, 1));
    
       free (buffer);
    
       return (EXIT_SUCCESS);
    }
    
    char *delete_c_po_v4 (char *str, long pos, long n)
    {
       if (pos < 0 || n < 1)
          return (NULL);
    
       long temp;
    
       for (; pos >= 0 && n > 0; --n)
          for (temp = pos; str[temp] = str[temp+1]; temp++)
             ;
    
       return (str);
    }
    ویرایش توسط C89 : 21-01-2015 در ساعت 03:40

  14. کاربران : 5 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  15. #18
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Post تابع printout

    هربار که m به صفر برسد، یک کاراکتر از رشته str توسط این تابع نیز در خروجی چاپ می شود.



    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MAX_SIZE 1024
    #define SPEED 123456789
    
    unsigned long printout (char*, long);
    
    int main ()
    {
       char *buff;
    
       buff = (char*) malloc (MAX_SIZE);
       fillitoff (buff, '\0', MAX_SIZE);
    
       printf (" (%ld)\n", printout (scat_v7 (strcpy_v7 (buff, "This is the C Programming Language"), " tutorial."), SPEED));
    
       free (buff);
    
       return (EXIT_SUCCESS);
    }
    
    unsigned long printout (char *str, long n)
    {
       long m;
       char *str_ptr = str;
    
       for (m = n; *str && n > 0; --m)
       {
          if (m < 1)
          {
             putchar (*str++);
             m = n;
          }
       }
    
       return strlen_v7 (str_ptr, 0);
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 15:25 دلیل: به درخواست ارسال کننده

  16. کاربران : 4 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  17. #19
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Post نسخه 8 تابع scat


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MAX_SIZE 1024
    
    char *scat_v8 (char*, const char*);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MAX_SIZE);
       fillitoff (str, '\0', MAX_SIZE);
    
       printf ("%s\n", scat_v8 (strcpy_v7 (str, "We are in"), " 1993."));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    char *scat_v8 (char *str1, const char *str2)
    {
       char *str_ptr = str1;
       
       while (*str_ptr)
          ++str_ptr;
          
       while (*str_ptr++ = *str2++)
          ;
          
       return (str1);
    }
    ویرایش توسط C89 : 08-01-2015 در ساعت 23:45

  18. کاربران : 4 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


  19. #20
    عضو ثابت
    تاریخ عضویت
    Aug 2014
    ارسال ها
    69
    محصول امنیتی
    ESET NOD32
    تشکر تشکر کرده 
    32
    تشکر تشکر شده 
    389
    اعتبار کاربر
    1

    Post نسخه 1، 2، 3، 4 و 5 تابع reverse_str

    این تابع، رشته str را وارونه کرده، و در آخر، اشاره گری-به-آن را نیز برگشت می دهد. (return می کند)


    کد:
    #include <stdio.h>
    #include <stdlib.h> /* for malloc() free() EXIT_SUCCESS */
    
    #define MAX_SIZE 1024
    
    void reverse_str_v1 (char[]);
    void reverse_str_v2 (char[]);
    void reverse_str_v3 (char[]);
    void *reverse_str_v4 (void*);
    char *reverse_str_v5 (char*);
    
    int main ()
    {
       char *str;
    
       str = (char*) malloc (MAX_SIZE);
       fillitoff (str, '\0', MAX_SIZE);
    
       strcpy_v7 (str, "...2030");
    
       reverse_str_v1 (str);
       printf ("%s\n", str);
    
       reverse_str_v2 (str);
       printf ("%s\n", str);
    
       reverse_str_v3 (str);
       printf ("%s\n", str);
    
       printf ("%s\n", reverse_str_v4 (str));
    
       printf ("%s\n", reverse_str_v5 (str));
    
       printf ("%s\n", reverse_str_v5 (str));
    
       free (str);
    
       return (EXIT_SUCCESS);
    }
    
    void reverse_str_v1 (char str[])
    {
       unsigned long i, j, temp;
    
       i = 0, j = strlen_v7 (str, 1);
    
       while (i < j && str[i])
       {
          temp = str[i];
          str[i] = str[j];
          str[j] = temp;
          i++, j--;
       }
    }
    
    void reverse_str_v2 (char str[])
    {
       unsigned long i, j, temp;
    
       for (i = 0, j = strlen_v7 (str, 1); i < j && str[i]; i++, j--)
       {
          temp = str[i];
          str[i] = str[j];
          str[j] = temp;
       }
    }
    
    void reverse_str_v3 (char str[])
    {
       unsigned long i, j, temp;
    
       for (i = 0, j = strlen_v7 (str, 1); i < j && str[i]; i++, j--)
          temp = str[i], str[i] = str[j], str[j] = temp;
    }
    
    void *reverse_str_v4 (void *str)
    {
       unsigned long i, j, temp;
       char *str_ptr = str;
    
       j = strlen_v7 (str, 1);
    
       for (i = 0; i < j && str_ptr[i]; i++, j--)
          temp = str_ptr[i], str_ptr[i] = str_ptr[j], str_ptr[j] = temp;
    
       return (str_ptr);
    }
    
    char *reverse_str_v5 (char *str)
    {
       unsigned long i, j, temp;
    
       for (i = 0, j = strlen_v7 (str, 1); i < j && *str; i++, j--)
          temp = str[i], str[i] = str[j], str[j] = temp;
    
       return (str);
    }
    ویرایش توسط C89 : 17-01-2015 در ساعت 15:36

  20. کاربران : 6 تشکر کرده اند از شما C89 برای ارسال این پست سودمند:


صفحه 2 از 5 اولیناولین 1234 ... آخرینآخرین

اطلاعات تاپیک

Users Browsing this Thread

در حال حاضر 1 در حال مشاهده این موضوع می باشد.. (0 کاربر و 1 مهمان در این انجمن حضور دارند)

موضوعات مشابه

  1. پاسخ ها: 2
    آخرين ارسال: 05-05-2017, 21:22
  2. راهنمایی در مورد ویروسی بودن یا نبودن فایلها وکرکها
    توسط Microtel در انجمن مباحث عمومی امنیت
    پاسخ ها: 4
    آخرين ارسال: 11-10-2013, 16:26
  3. سه بعدی دیدن فیلم هایی که سه بعدی نیستند در ایران !
    توسط paye2 در انجمن مباحث عمومی ویدئو
    پاسخ ها: 3
    آخرين ارسال: 01-10-2013, 14:30
  4. یه سوال درباره دامنه! - راهنمایی کنید
    توسط javadmo در انجمن سایر مباحث عمومی اینترنت
    پاسخ ها: 15
    آخرين ارسال: 28-09-2013, 21:13
  5. پاسخ ها: 0
    آخرين ارسال: 09-09-2011, 23:49

برچسب برای این موضوع

بوک مارک ها

بوک مارک ها

مجوزهای ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •