.
I have a code. This code delets one line for instance 22 lines later add one line end of line.
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
/*
Azad Arkan
20120205303
Bu kod student.txt metin dosyasındaki öğrenci listesini okuyup ve linked list ile listeleyen, bir öğrencinin bilgisini silen (bir satır silme) ve öğrenci listesinin sonuna yeni bir öğrenci bilgisi ekleyen bir c kodudur.
*/
struct student{ //struct içersindeki değişkenler tanımlıyoruz
char no[10];
char name[40];
char surname[40];
struct student *next; //adres tanımlıyoruz
}studen_t={"no","name","surname",NULL};
int read_student(FILE *f){ //okuma fonksiyonu
if(f==NULL) {return -1;}
struct student *temp=&studen_t; //studen_t değişkeninin adresini tempe atıyoruz
char k[150];
while(fgets(k,150,f)!= NULL){ //dosyayı satır satır okuyoruz
temp->next=(struct student*) malloc(sizeof(struct student));//next'e hafıza belirliyoruz ve tempi nexte gönderiyoruz
char *no=strtok(k,"\t");
char *name=strtok(NULL,"\t");
char *surname=strtok(NULL,"\t");
if(no!=NULL && name!=NULL && surname!=NULL){
strncpy(temp->next->no,no,10);
strncpy(temp->next->name,name,40);
strncpy(temp->next->surname,surname,40);
temp=temp->next;//while bitene kadar temp'i next'in adresini gösterecek ve temp her seferinde artacak.
}
}
temp->next=NULL; //dosyayı sonlandırmak için next'in adresine NULL'a eşitliyoruz.
return 0;
}
void add(){ //ekleme fonksiyonu
FILE *f=fopen("student.txt","r");
FILE *a=fopen("student2.txt","a");
struct student *temp=&studen_t;
while(temp != NULL){ //verileri student2 dosyasına ekliyoruz
temp=temp->next;
struct student* temp=(struct student*) malloc(sizeof(struct student));
fprintf(a,"\n");
scanf("%9s",temp->no);
fputs(temp->no,a);
fprintf(a,"\t");
scanf("%39s",temp->name);
fputs(temp->name,a);
fprintf(a,"\t");
scanf("%39s",temp->surname);
fputs(temp->surname,a);
fprintf(a,"\t");
}
fclose(a), fclose(f); //dosya kapatma komutu
free(temp);
}
int delet(FILE *f,char no){ //silme fonksiyonu
char ch;
int del, line=0;
del=(int)no;
FILE *a=fopen("student.txt","r");
FILE *b=fopen("student2.txt","a");
ch=getc(a);
if(ch!=EOF) {line=1;}
while(1){
if(del!=line) {putc(ch,b);} //silinmesi istenmeyen satırları yeni dosyaya yazdırma işlemini yapıyoruz
ch=getc(a);
if(ch=='\n') {line++;}
if(ch==EOF) {break;}
}
fclose(a),fclose(b); //dosya kapatma iÅŸlemi
return 0;
}
/*int delet(FILE *a,char no);
void add();
int read_student(FILE *f);
*/
int main() {
FILE *f=fopen("student.txt","r");
FILE *a=fopen("student2.txt","a");
read_student(a); //okuma fonksiyonunu çağırıyoruz
delet(a,22); //silme fonksiyonunu çağırıyoruz
add(); //ekleme fonksiyonunu çağırıyoruz
rename("student2.txt", "student.txt"); // dosyanın ismini değiştiriyoruz
return 0;
}
.
My file txt below
13 ABDULLAH G�L 14 ALI AKDEMIR 15 ARIF �Z�ELIK 16 ASIYE DEMIRTAS 17 BERK S�KR� KARAKAYA 18 BERNA YAREN YAGIZ 19 BURAK TIGLI 20 EMRE ERDEM 21 ENES G�LERY�Z 22 ENES KIYMIK 23 FATIH KO� 24 FATIH PACCI 25 FATIH YILMAZ 26 FATMA SELIKA TUG 27 FURKAN �AGLAK 28 HAMZA VEDAT CENGIZ 29 Hasan Ayg�noglu 30 ISMAIL YAL�INKAYA 31 LEYLA S�NMEZ 32 MELEK TUYLU 33 MUHAMMED TALHA SUSAM 34 MURAT TEMIR 35 MURAT ISBIT 36 MURAT CAN DERE 37 MUSTAFA FURKAN GEDIK 38 NUR SEDA SAHKULUBEY 39 OKAN UZUN 40 REMZI �AKIR 41 SAIT FURKAN �AGLAYAN 42 SALISE BEYZANUR
rishin
#include<stdio.h>  
void sum(int, int);  
void main()  
{  
    int a,b,result;   
    printf("\nGoing to calculate the sum of two numbers:");  
    printf("\nEnter two numbers:");  
    scanf("%d %d",&a,&b);  
    sum(a,b);  
}  
void sum(int a, int b)  
{  
    printf("\nThe sum is %d",a+b);      
}  
Hadaward 'Solly'
dont use scanf. That's a sin. Try a safer function with a buffer limiting input size, like fgets (could be safer but this will do for now): https://stackoverflow.com/questions/2430303/disadvantages-of-scanf#:~:text=The%20problems%20with%20scanf%20are,pointer%20in%20an%20indeterminate%20location.
Alex
if I have vars with common logic block, like:
int x, y, z;
this is more convenient to read than
int x;
int y;
int z;