Wednesday, June 21, 2017

C-மொழியில் ஃபைல்களை கையாளுதல்





பொதுவாக ஒரு சி நிரலை இயக்கும் பொழுது வேரியபிளில் டேட்டாவை சேமிப்போம்.அதில் டேட்டாவை எழுதச் செய்வோம். அதை மாற்றி அமைப்போம்.அவற்றை ரீட் செய்வோம்.ஆனால் நிரல் முடிந்தவுடன் அவை அழிந்து போய் விடும். அதற்கு பதிலாக நிரந்தரமாக அந்த டேட்டாவை ஃபைலில் சேமிக்கலாம்.
எனவே ஃபைல்களை கையாளுதல் என்பது கோடிங் மூலம் அவற்றை திறப்பது,எழுதுவது, வாசிப்பது,மூடுவது ஆகும்

ஃபைல்களை கையாளுவதற்கான ஃபங்க்சன்கள்
சி மொழியில் ஃபைல்களை கையாளுவதற்கான ஃபங்சன்கள் நிறைய உள்ளன அவையாவன
No.
Function
Description
1
fopen()
புதிதாக அல்லது ஏற்கனவே உள்ள ஃபைலை திறப்பதற்கு
2
fprintf()
ஃபைலில் டேட்டாவை எழுதுவதற்கு
3
fscanf()

ஃபைலில் இருந்து டேட்டாவை வாசிப்பதற்கு.
4
fputc()
ஒரு கேரக்டரை எழுதுவதற்கு
5
fgetc()
ஒரு கேரக்டரை வாசிப்பதற்கு
6
fclose()
ஃபைலை மூடுவதற்கு
7
fseek()
ஃபைலில் குறிப்பிட்ட இடத்தில் கர்சரை இருத்துவதற்கு
8
fputw()
ஒரு ஃபைலில் இன்டிஜர் மதிப்பை எழுதுவதற்கு
9
fgetw()
ஒரு ஃபைலில் இருந்து இன்டெஜர் மதிப்பை வாசிப்பதற்கு
10
ftell()
கர்சர் எந்த இடத்தில் உள்ளது என்று கூறுவதற்கு
11
rewind()
கர்சரை ஃபைலின் ஆரம்ப இடத்தில் இருத்துவதற்கு
Opening File: fopen()
fopen()ஃபங்சனானது ஒரு புதிதாக ஃபைலைஅல்லது ஏற்கனவே உள்ள ஃபைலை திறப்பதற்கு பயன்படுகின்றது.
Syntax:
FILE *fopen( const char * filename, const char * mode );
ஒரு ஃபைலை திறப்பதற்கு நிறைய mode உள்ளன அவையாவன. 


mode
விளக்கம்
r
ஃபைலை வாசிப்பதற்கு
w
ஃபைலில் எழுதுவதற்கு
a
ஃபைலின் கடைசியில் சேர்த்துக் கொள்ளுவதற்கு
r+
வாசிப்பது,எழுதுவது இரண்டும்
w+
வாசிப்பது,எழுதுவது இரண்டும்
a+
வாசிப்பது,எழுதுவது இரண்டும்
rb
பைனரி ஃபைலை வாசிப்பதற்கு
wb
பைனரி ஃபைலில் எழுதுவதற்கு
ab
பைனரி ஃபைலின் கடைசியில் சேர்த்துக் கொள்ளுவதற்கு
rb+
பைனரி ஃபைலில் வாசிப்பது,எழுதுவது இரண்டும்
wb+
பைனரி ஃபைலில் வாசிப்பது,எழுதுவது இரண்டும்
ab+
பைனரி ஃபைலில் வாசிப்பது,எழுதுவது இரண்டும்
























ஃபைலை மூடுதல்
:SYNTAX:
int fclose( FILE *fp );  
C fprintf()மற்றும் fscanf()

fprintf() மூலம் எழுதுதல்
SYNTAX:
int fprintf(FILE *stream, const char *format [, argument, ...])  
Example:
#include <stdio.h>  
int main(){  
   FILE *fp;  
   fp = fopen("sample.txt", "w");//opening file  
   fprintf(fp, "Hello world by fprintf...\n");//writing data into file  
   fclose(fp);//closing file  
return 0;
}  

fscanf() மூலம் string ஒன்றை எழுதுதல்
Syntax:
  1. int fscanf(FILE *stream, const char *format [, argument, ...])  
Example:
#include <stdio.h>  
int main(){  
   FILE *fp;  
   char str[255];//creating char array to store data of file  
   fp = fopen(“sample.txt", "r");  
   while(fscanf(fp, "%s", str)!=EOF){  
   printf("%s ", str );  
   }  
   fclose(fp);  
return 0;
}  
Output:
Hello world by fprintf...

C File உதாரணம்: ஒரு மாணவரின் டேட்டா

#include <stdio.h>  
int  main()  
{  
    FILE *fptr;  
    int id;  
    char name[30];  
int mark;
    fptr = fopen("stu.txt", "w+");/*  open for writing */  
    if (fptr == NULL)  
    {  
        printf("File does not exists \n");  
        return;  
    }  
    printf("Enter the id\n");  
    scanf("%d", &id);  
    fprintf(fptr, "Id= %d\n", id);  
    printf("Enter the name \n");  
    scanf("%s", name);  
    fprintf(fptr, "Name= %s\n", name);  
    printf("Enter the mark\n");  
    scanf("%d", &mark);  
    fprintf(fptr, "Mark= %d\\n", mark);  
    fclose(fptr);  
return 0;
}  
Output:
Enter the id
1
Enter the name
karthikeyan
Enter the mark
75
இப்பொழுது நிரலில் தற்போதைய ஃபோல்டரில் stu.txt என்று ஒரு ஃபைல் இருக்கும்.
Stu.txt
Id= 1
Name= karthikeyan
Mark=75
C fputc()மற்றும்getc()

ஃபைலில் ஒற்றை கேரக்டரை எழுதுதல்

Syntax:
  1. int fputc(int c, FILE *stream)  
Example:
#include <stdio.h>  
int main(){  
   FILE *fp;  
   fp = fopen("file1.txt", "w");//opening file  
   fputc('c’,fp);//writing single character into file  
   fclose(fp);//closing file  
return 0;
}  
file1.txt
c

ஒற்றை ஒற்றை கேரக்டராக வாசித்தல்.
Syntax:
  1. int fgetc(FILE *stream)  
Example:
#include<stdio.h>  
int main(){  
FILE *fp;  
char c;  
fp=fopen("myfile.txt","r");  
  
while((c=fgetc(fp))!=EOF){  
printf("%c",c);  
}  
fclose(fp);  
return 0;
}  
myfile.txt
example text
C fputs()மற்றும் fgets()
இவை இரண்டும் ஒரு ஸ்ட்ரிங் ஒன்றை ஃபைலில் எழுதுவதற்கோ அல்லது வாசிப்பதற்கோ பயன்படுகின்றது..

File : fputs() function எழுதுதல்
Syntax:
int fputs(const char *s, FILE *stream)  
Example:
#include<stdio.h>  
int  main(){  
FILE *fp;  
  
fp=fopen("myfile2.txt","w");  
fputs(“welcome to c programming",fp);  
  
fclose(fp);  
return 0;
}  
myfile2.txt
welcome to c programming

File : fgets() function வாசித்தல்
Fgets() மூலம் ஒவ்வொரு வரியாக ஃபைலில் இருந்து வாசித்தல்
Syntax:
  1. char* fgets(char *s, int n, FILE *stream)  
Example:
#include<stdio.h>  
int main(){  
FILE *fp;  
char text[300];  
  
fp=fopen("myfile2.txt","r");  
printf("%s",fgets(text,200,fp));  
  
fclose(fp);  
return 0;
}  
Output:
welcome to c programming
C fseek() function
இந்த ஃபங்சன் ஆனது கர்சரை குறிப்பிட்ட இடத்தில் நிறுத்தி அங்கு எழுதுதல்
Syntax:
  1. int fseek(FILE *stream, long int offset, int whence)  
Example:
#include <stdio.h>  
void main(){  
   FILE *fp;  
  
   fp = fopen("myfile.txt","w+");  
   fputs("This is c programming, fp);  
    
   fseek( fp, 7, SEEK_SET );  
   fputs("Muthu karthikeyan", fp);  
   fclose(fp);  
}  
myfile.txt
This is Muthu karthikeyan
C rewind() function
இந்த் ஃபங்சன் ஆனது கர்சரை ஃபைலின் ஆரம்பத்தில் இருத்துவதற்கு பயன்படுகின்றது..
Syntax:
  1. void rewind(FILE *stream)  
Example:
File: file.txt
  1. this is a simple text  
File: rewind.c
#include<stdio.h>  
int  main(){  
FILE *fp;  
char c;  
fp=fopen("file.txt","r");  
  
while((c=fgetc(fp))!=EOF){  
printf("%c",c);  
}  
  
rewind(fp);//moves the file pointer at beginning of the file  
  
while((c=fgetc(fp))!=EOF){  
printf("%c",c);  
}  
  
fclose(fp);    
return 0;
}    
Output:
this is a simple textthis is a simple text
மேலே உள்ள நிரலில் முதல் லூப் முதிந்தவுடன் கர்சர் ஆனது ஃபைலின் கடைசியில் இருக்கும். அதை மீண்டும் ஃபைலின் ஆரம்பத்தில் இருத்துவதற்கு rewind() ஃபங்சன் பயன்படுகின்றது
 ftell() function
கர்சரானது ஃபைலின் எந்த இடத்தில் உள்ளது என்று அறிவதற்கு இந்த ஃபங்சன் பயன்படுகின்றது.
Syntax:
  1. long int ftell(FILE *stream)  
Example:
File: ftell.c
#include <stdio.h>  
int main (){  
   FILE *fp;  
   int length;  
   fp = fopen("file.txt", "r");  
   fseek(fp, 0, SEEK_END);  
  
   length = ftell(fp);  
  
   fclose(fp);  
   printf("Size of file: %d bytes", length);  
   return 0;
}  
Output:
Size of file: 21 bytes
மேலே உள்ள நிரலில் முதலில் கர்சரானது ஃபைலின் கடைசியில் இருத்தப்படுகின்றது.அதன் பிறகு அதன் இண்டெக்ஸ் பொசிசன் மூலம் அந்த ஃபைலின் நீளம் அறியப்படுகின்றது.
                              -முத்து கார்த்திகேயன்,மதுரை
ads Udanz