نکات توابع سی و بعضی مهارتها

شروع موضوع توسط saalek110 ‏13 جولای 2019 در انجمن برنامه‌نویسی C و هم خانواده‌هایش

  1. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نکات توابع سی و بعضی مهارتها
     
    نوشته شده توسط saalek110 در ‏13 جولای 2019
  2. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    هر فردی می تواند در این تاپیک نکته بنویسد. و سطح خاصی ندارد.
    دوستان خواننده هر کس در مورد تابع یا مهارت های مورد لزوم رایج سی مطلبی دید اینجا بزنه.
    هر اشکالی کدهای من داشت بفرمایید. اگر حالت کلی تری می دانید بفرمایید. هر شرح مفیدی برای رفع اشکالات می دانید اضافه کنید.


    این تاپیک آموزش سی نیست. برای کسانی است که سی بلدند.
    در این تاپیک بیشتر به روش استفاده از توابع سی پرداخته می شود.
    و کلا نکات خاص سی.
     
    آخرین ویرایش: ‏17 آگوست 2019 در 06:59
    نوشته شده توسط saalek110 در ‏13 جولای 2019
  3. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    من فعلا با این کامپایلر کار می کنم. Dev-c ولی نکات این تاپیک مربوط به کامپایلر خاصی نیست.
    ورژن جدید Dev-c نیست. اگر ورژن جدید می خواهید از جای دیگر دانلود کنید.
    من به علت سبکی از این کامپایلر استفاده می کنم. و از ویژوال سی استفاده نمی کنم.
     

    پیوست ها:

    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  4. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    اول تاپیک فهرست نوشته می شود.
    فهرست:
    معرفی تابع printf و scanf
    لیست توابع stdio

    معرفي strcpy و strcat:
    معرفی strlen

    لیست گیری از فایلهای یک پوشه
    مقایسه sizeof و strlen در رشته های اشاره گری و آرایه ای
    نکته getchar و putchar
    getc
    difference between getch() and getchar

    توابع ریاضی


    صفحه دوم پستهای 21 تا 40
    خواندن و نوشتن در فایل
    ساختن فایلهای خودمان
    ساختن هدر فایلهای خودمان


    صفحه سوم پستهای 41 تا 60

    لیست تمام توابع C و کتابخانه استاندارد POSIX
    برنامه ساده سی برای سرگرمی
    صفحه جالب. انواع hello world جک برنامه نویسی
    جک برنامه نویسی
    سایت حدس زدن نتیجه اجرای برنامه ها
    صدا Beep
    آدرس دانلود code::blocks
    تفاوت رفتار کامپایلرها مقایسه Dev c و code::blocks
    What is the main difference between code blocks and Dev-C++?
    Best IDEs for C and C++ Developers

    Time ........Seconds since January 1, 1970
    CPU start time and end time
    تاریخ و ساعت و روز هفته
    تاریخ و ساعت و روز هفته
    تاریخ و ساعت و روز هفته


     
    آخرین ویرایش: ‏21 آگوست 2019 در 08:50
    نوشته شده توسط saalek110 در ‏13 جولای 2019
  5. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    معرفی تابع printf و scanf
    اولی برای چاپ نتایج استفاده می شود و دومی برای ورودی گرفتن.
    کد از منبع

    PHP:
    /* scanf example */
    #include <stdio.h>

    int main ()
    {
      char str [80];
      int i;

      printf ("Enter your family name: ");
      scanf ("%79s",str);
      printf ("Enter your age: ");
      scanf ("%d",&i);
      printf ("Mr. %s , %d years old.\n",str,i);
      printf ("Enter a hexadecimal number: ");
      scanf ("%x",&i);
      printf ("You have entered %#x (%d).\n",i,i);

      return 0;
    }
    نتیجه اجرا:
    PHP:
    Enter your family name: Soulie
    Enter your age: 29
    Mr. Soulie , 29 years old.
    Enter a hexadecimal number: ff
    You have entered 0xff (255).
    اما هدف از این پست معرفی کاملتر printf است.
    a1.jpg
    منبع
    a2.jpg
    PHP:
    /* printf example */
    #include <stdio.h>

    int main()
    {
       printf ("Characters: %c %c \n", 'a', 65);
       printf ("Decimals: %d %ld\n", 1977, 650000L);
       printf ("Preceding with blanks: %10d \n", 1977);
       printf ("Preceding with zeros: %010d \n", 1977);
       printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
       printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
       printf ("Width trick: %*d \n", 5, 10);
       printf ("%s \n", "A string");
       return 0;
    }
    نتیجه اجرا:
    PHP:
    Characters: a A
    Decimals: 1977 650000
    Preceding with blanks:       1977
    Preceding with zeros: 0000001977
    Some different radices: 100 64 144 0x64 0144
    floats: 3.14 +3e+000 3.141600E+000
    Width trick:    10
    A string

     
    آخرین ویرایش: ‏13 جولای 2019
    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  6. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  7. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    معرفي strcpy و strcat:
    کد:
    PHP:
    /* strcat example */
    #include <stdio.h>
    #include <string.h>

    int main ()
    {
      char str[80];
      strcpy (str,"these ");
      strcat (str,"strings ");
      strcat (str,"are ");
      strcat (str,"concatenated.");
      puts (str);
      return 0;
    }
    نتیجه اجرا:
    PHP:
    these strings are concatenated.
    منبع
    --------------------------------
    مثال دوم:
    PHP:
         char s1[50],
              s2[50];
         strcpy( s1, "Tweedledee " );
         strcpy( s2, "Tweedledum" );
         strcat( s1, s2 );
    نتیجه اجرا:
    PHP:
     Tweedledee Tweedledum
    به روش کار توجه کنید:
    ابتدا دو آرایه کاراکتری تعریف شده.
    دوم مقادیر یکی یکی با strcppy در متغیرها گذاشته شده.
    با تابع strcat این دو را با هم لینک کرده.
    منبع
     
    آخرین ویرایش: ‏13 جولای 2019
    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  8. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    PHP:
       strlen()    Get length of a string.
       strcpy()    Copy one string to another.
       strcat()    Link together (concatenate) two strings.
       strcmp()    Compare two strings.
       strchr()    Find character in string.
       strstr()    Find string in string.
       strlwr()    Convert string to lowercase.
       strupr()    Convert string to uppercase.
    منبع
    تابع strlen طول رشته را می دهد.
    تابع strcpy یک رشته را در دیگری کپی می کند.
    تابع strcat د رشته را به هم وصل می کند.
    تابع strcmp دو رشته را با هم مقایسه می کند.
    تابع strchr کاراکتر را در رشته پیدا می کند.
    تابع strstr رشته ای را در رشته ای می یابد.
    مثال:
    PHP:
       #include <stdio.h>
       #include <string.h>

       int main()
       {
         char *t = "XXX";
         printf( "Length of <%s> is %d.\n", t, strlen( t ));
       }
    نتیجه اجرا:
    PHP:
     Length of <XXX> is 3.
     
    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  9. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    لیست گیری از فایلهای یک پوشه:
    PHP:
    #include <dirent.h>
    #include <stdio.h>

    int main(void) {
      DIR *d;
      struct dirent *dir;
      d = opendir(".");
      if (d) {
        while ((dir = readdir(d)) != NULL) {
          printf("%s\n", dir->d_name);
        }
        closedir(d);
      }
      return(0);
    }
    منبع
    a6.jpg
    a2.jpg

    ---------------------
    برنامه کامل تر:
    منبع
    PHP:
    #include <dirent.h>
    #include <stdio.h>

    int main(void) {
    char path[1000];
        struct dirent *dp;
        DIR *dir = opendir("./new folder");

        // Unable to open directory stream
        if (!dir)
            return;

        while ((dp = readdir(dir)) != NULL)
        {
            if (strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0)
            {
                printf("%s\n", dp->d_name);

                // Construct new path from our base path
                strcpy(path, "./new folder");
                strcat(path, "/");
                strcat(path, dp->d_name);

               printf("%s\n",path);
            }
        }

        closedir(dir);


      return(0);
    }
    a11.jpg
    با استفاده از این برنامه می توان فایلهای یک پوشه را خواند و در یک فایل یکی کرد.مثلا 10 تا فایل تکست را در یک فایل تکست نوشت.
    فایل مادر را بیرون تر باز کنید و داخل تر فایلهای پوشه را باز کنید و در فایل مادر بنویسید و ببندید.و در آخر فایل مادر را کلوز کنید.
     
    آخرین ویرایش: ‏13 جولای 2019
    نوشته شده توسط saalek110 در ‏13 جولای 2019
    the_king از این پست تشکر کرده است.
  10. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    مقایسه sizeof و strlen در رشته های اشاره گری و آرایه ای
    char array vs char pointer

    PHP:
    #include <stdio.h>
    #include <string.h>

    int main(void) {
     
        char *p =  "hello_12345678901234567890";
        char q[] = "hello_12345678901234567890"; // no need to count this

        printf("%d\n", sizeof(p)); // => size of pointer to char -- 4 on x86, 8 on x86-64
        printf("%d\n", sizeof(q)); // => size of char array in memory -- 6 on both

        // size_t strlen(const char *s) and we don't get any warnings here:
        printf("%d\n", strlen(p)); // => 5
        printf("%d\n", strlen(q)); // => 5
     

      return(0);
    }
    کامنت های عکس با نتیجه من جور در نمی آید چون من رشته را طولانی تر کردم.
    a8.jpg
    منبع:
    What is the difference between char array vs char pointer in C?
     
    نوشته شده توسط saalek110 در ‏16 جولای 2019
    the_king از این پست تشکر کرده است.
  11. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نوشته شده توسط saalek110 در ‏16 جولای 2019
    the_king از این پست تشکر کرده است.
  12. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نکته getchar و putchar:
    PHP:
    #include <stdio.h>
    int main( ) {

       int c;

       printf( "Enter a value :");
       c = getchar( );

       printf( "\nYou entered: ");
       putchar( c );

       return 0;
    }
    ما int تعریف کردیم برای دریافت char نه char.
    PHP:
       int c;
       c = getchar( );
    منبع
    خروجی:
    کد (Text):
    Enter a value : this is test
    You entered: t
    به برنامه زیر نگاه کنید. من h تایپ کردم و اینتر کردم ولی getchar دومی هم رد کرد و خالی گزارش کرد:

    a2.jpg
     
    آخرین ویرایش: ‏20 جولای 2019
    نوشته شده توسط saalek110 در ‏20 جولای 2019
    the_king از این پست تشکر کرده است.
  13. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    getc
    منبع
    PHP:
    #include<stdio.h>

    int main () {
       char c;

       printf("Enter character: ");
       c = getc(stdin);
       printf("Character entered: ");
       putc(c, stdout);
     
       return(0);
    }
    اجرا:
    PHP:
    Enter character: a
    Character entered: a
     
    نوشته شده توسط saalek110 در ‏21 جولای 2019
  14. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    difference between getch() and getchar()?
    getchar() is a standard function that gets a character from the stdin.

    getch() is non-standard. It gets a character from the keyboard (which may be different from stdin) and does not echo it.

    منبع
    -------------------
    GETCH:
    getch gets a character from console but does not echo ( write ) to the screen. It reads a single character directly from the keyboard, without echoing

    منبع
     
    نوشته شده توسط saalek110 در ‏21 جولای 2019
  15. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    توابع ریاضی سی دسته‌ای از توابع در کتابخانه استاندارد زبان برنامه‌نویسی سی هستند که توابع اصلی و پایه‌ای ریاضیات را پیاده‌سازی می‌کنند. بیشتر این توابع در فایل سرایند math.h تعریف شده‌اند. هر تابع چند نسخه مختلف برای کار با انواع داده مختلف دارد. مثلاً abs و labs و fabs هر سه قدر مطلق یک عدد را برمی‌گردانند. اما abs یک عدد integer و labs یک عدد long و fabs یک عدد float برمیگردانند. این قانون برای همه توابع رعایت شده و کافیست بسته به نیاز از هر کدام استفاده کرد. توابعی که بر روی زاویهها عمل می‌کنند (مثل توابع مثلثاتی) از واحد رادیان به عنوان واحد اندازه‌گیری زاویه استفاده می‌کنند. توابعی هم برای کار بر روی اعداد مختلط در نظر گرفته شده است که این توابع در فایل complex.h تعریف شده‌اند. در فایل stdio.h هم توابعی برای تولید اعداد تصادفی در نظر گرفته شده است.
    منبع
     
    نوشته شده توسط saalek110 در ‏23 جولای 2019
  16. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    Basics of Common Math Functions in C Programming
    منبع
    a5.jpg

    PHP:
    #include <stdio.h>
    #include <math.h>
    int main()
    {
    float result,value;
    printf("Input a float value: ");
    scanf("%f",&value);
    result = sqrt(value);
    printf("The square root of %.2f is %.2fn",
    value,result);
    result = pow(value,3);
    printf("%.2f to the 3rd power is %.2fn",
    value,result);
    result = floor(value);
    printf("The floor of %.2f is %.2fn",
    value,result);
    result = ceil(value);
    printf("And the ceiling of %.2f is %.2fn",
    value,result);
    return(0);
    }
    کد از سایت بالا. تست نشد.
     
    نوشته شده توسط saalek110 در ‏23 جولای 2019
  17. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    PHP:
    syntax : double ceil(double x)
    PHP:
    // C code to illustrate
    // the use of ceil function.
    #include <stdio.h>
    #include <math.h>

    int main ()
    {
    float val1, val2, val3, val4;
     
    val1 = 1.6;
    val2 = 1.2;
    val3 = -2.8;
    val4 = -2.3;
     
    printf ("value1 = %.1lf\n", ceil(val1));
    printf ("value2 = %.1lf\n", ceil(val2));
    printf ("value3 = %.1lf\n", ceil(val3));
    printf ("value4 = %.1lf\n", ceil(val4));
         
    return(0);
    }
    Output:
    PHP:
    value1 = 2.0
    value2 = 2.0
    value3 = -2.0
    value4 = -2.0
    منبع
    ------------------------------------------------------
    PHP:
    syntax : double floor(double x)
    PHP:
    // C code to illustrate
    // the use of floor function
    #include <stdio.h>
    #include <math.h>

    int main ()
    {
       float val1, val2, val3, val4;
     
       val1 = 1.6;
       val2 = 1.2;
       val3 = -2.8;
       val4 = -2.3;
     
       printf("Value1 = %.1lf\n", floor(val1));
       printf("Value2 = %.1lf\n", floor(val2));
       printf("Value3 = %.1lf\n", floor(val3));
       printf("Value4 = %.1lf\n", floor(val4));
       
       return(0);
    }
    Output:
    PHP:
    Value1 = 1.0
    Value2 = 1.0
    Value3 = -3.0
    Value4 = -3.0
    ---------------------------------------------
    PHP:
    syntax : double fabs(double x)
    PHP:
    // C code to illustrate
    // the use of fabs function
    #include <stdio.h>
    #include <math.h>

    int main ()
    {
       int a, b;
       a = 1234;
       b = -344;
       
       printf("The absolute value of %d is %lf\n", a, fabs(a));
       printf("The absolute value of %d is %lf\n", b, fabs(b));
       
       return(0);
    }
    PHP:
    The absolute value of 1234 is 1234.000000
    The absolute value of -344 is 344.000000
    --------------------------
    و بقیه را در سایت اصلی مطالعه کنید.
    PHP:
    syntax : double log(double x)

    syntax : double log10(double x)

    syntax : double fmod(double x, double y)

    syntax : double sqrt(double x)

    syntax : double pow(double x, double y)

    syntax : double modf(double x, double *integer)

    syntax : double exp(double x)

    syntax : double cos(double x)
    syntax : double acos(double x)
    syntax : double tanh(double x)
     
     
    نوشته شده توسط saalek110 در ‏23 جولای 2019
    the_king از این پست تشکر کرده است.
  18. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نوشته شده توسط saalek110 در ‏23 جولای 2019
    SajjadKhati از این پست تشکر کرده است.
  19. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    نوشته شده توسط saalek110 در ‏23 جولای 2019
    the_king و SajjadKhati از این پست تشکر کرده اند.
  20. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    c1.jpg
     
    نوشته شده توسط saalek110 در ‏23 جولای 2019

به اشتراک بگذارید