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

saalek110

Well-Known Member
هر فردی می تواند در این تاپیک نکته بنویسد. و سطح خاصی ندارد.
دوستان خواننده هر کس در مورد تابع یا مهارت های مورد لزوم رایج سی مطلبی دید اینجا بزنه.
هر اشکالی کدهای من داشت بفرمایید. اگر حالت کلی تری می دانید بفرمایید. هر شرح مفیدی برای رفع اشکالات می دانید اضافه کنید.


این تاپیک آموزش سی نیست. برای کسانی است که سی بلدند.
در این تاپیک بیشتر به روش استفاده از توابع سی پرداخته می شود.
و کلا نکات خاص سی.
 
آخرین ویرایش:

saalek110

Well-Known Member
من فعلا با این کامپایلر کار می کنم. Dev-c ولی نکات این تاپیک مربوط به کامپایلر خاصی نیست.
ورژن جدید Dev-c نیست. اگر ورژن جدید می خواهید از جای دیگر دانلود کنید.
من به علت سبکی از این کامپایلر استفاده می کنم. و از ویژوال سی استفاده نمی کنم.
بهتر است از منابع معتبر دانلود کنید چون ممکن است کامپیوتر من ویروسی باشد.
 

پیوست ها

  • devcpp-4.9.9.2.rar
    8.9 مگایابت · بازدیدها: 17
آخرین ویرایش:

saalek110

Well-Known Member
اول تاپیک فهرست نوشته می شود.
فهرست:
معرفی تابع 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
تاریخ و ساعت و روز هفته
تاریخ و ساعت و روز هفته
تاریخ و ساعت و روز هفته

صفحه چهارم پستهای 61 تا 80
توابع ریاضی
 
آخرین ویرایش:

saalek110

Well-Known Member
معرفی تابع 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


 
آخرین ویرایش:

saalek110

Well-Known Member
معرفي 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 این دو را با هم لینک کرده.
منبع
 
آخرین ویرایش:

saalek110

Well-Known Member
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

Well-Known Member
لیست گیری از فایلهای یک پوشه:
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 تا فایل تکست را در یک فایل تکست نوشت.
فایل مادر را بیرون تر باز کنید و داخل تر فایلهای پوشه را باز کنید و در فایل مادر بنویسید و ببندید.و در آخر فایل مادر را کلوز کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
مقایسه 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

Well-Known Member
نکته 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( );
منبع
خروجی:
کد:
Enter a value : this is test
You entered: t

به برنامه زیر نگاه کنید. من h تایپ کردم و اینتر کردم ولی getchar دومی هم رد کرد و خالی گزارش کرد:

a2.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
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

Well-Known Member
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

Well-Known Member
توابع ریاضی سی دسته‌ای از توابع در کتابخانه استاندارد زبان برنامه‌نویسی سی هستند که توابع اصلی و پایه‌ای ریاضیات را پیاده‌سازی می‌کنند. بیشتر این توابع در فایل سرایند math.h تعریف شده‌اند. هر تابع چند نسخه مختلف برای کار با انواع داده مختلف دارد. مثلاً abs و labs و fabs هر سه قدر مطلق یک عدد را برمی‌گردانند. اما abs یک عدد integer و labs یک عدد long و fabs یک عدد float برمیگردانند. این قانون برای همه توابع رعایت شده و کافیست بسته به نیاز از هر کدام استفاده کرد. توابعی که بر روی زاویهها عمل می‌کنند (مثل توابع مثلثاتی) از واحد رادیان به عنوان واحد اندازه‌گیری زاویه استفاده می‌کنند. توابعی هم برای کار بر روی اعداد مختلط در نظر گرفته شده است که این توابع در فایل complex.h تعریف شده‌اند. در فایل stdio.h هم توابعی برای تولید اعداد تصادفی در نظر گرفته شده است.
منبع
 

saalek110

Well-Known Member
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

Well-Known Member
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)
 

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

بالا