Mazání v souboru

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

zabi
Level 3
Level 3
Příspěvky: 564
Registrován: prosinec 08
Bydliště: Zlínsky kraj
Pohlaví: Muž
Stav:
Offline

Mazání v souboru

Příspěvekod zabi » 30 led 2010 18:15

Nevíte prosím někdo, jak smazat řádky v souboru, do kterého se ukládají data?? Dejme tomu, že po stisknutí "d" se v soboru smaže posledních 5 řádků.

Stávající kód - slouží pro otevření a vypsání dat v souboru. Potřeboval bych ještě nějak vyřešit to smazání...

Kód: Vybrat vše

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"      

FILE *input;
FILE *output;
      
char znak;   
char nazev[20];
char zanr[10];
char role[50];
char zeme[20];
/*int rok;*/

int main(void)      
{
  printf("Seznam DVD\n==========\n\n");
  printf("d+Enter = smazat posledni\n\n\n");
           

  if ((input = fopen("soubor.txt", "r")) == NULL) {   
    printf("Chyba pri otvirani souboru!\n\nPro ukonceni programu stiskni libovolnou");   
    getch();         
  }

  while ((znak = getc(input)) != EOF)      
    putchar(znak);      
    getch(); 
    return 0;      
}

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Mazání v souboru

Příspěvekod CZechBoY » 31 led 2010 19:14

Jedině že bys četl řádek po řádku a ukládal to do proměnný, pak smazal poslendích 5 řádků a zapsal obsah proměnné do souboru.
Jinak nevim jak to udělat, žádné mazání v souboru neznám :(
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

zabi
Level 3
Level 3
Příspěvky: 564
Registrován: prosinec 08
Bydliště: Zlínsky kraj
Pohlaví: Muž
Stav:
Offline

Re: Mazání v souboru

Příspěvekod zabi » 01 úno 2010 00:55

No, asi tam tu funnkčnost dávat nebudu.

Akorát si ještě nevím rady s následujícím: Kód který jsem uvedl v prvním příspěvku sloouží k otevření souboru a vypsání jeho obsahu. Teď jsem si vytvořil funkčnost pro zapsání do souboru (princip fungování: stiskem n+ENTER se zobrazí: Vložte název filmu atd.). Bohužel, když to dám dohromady, tak mi to nejede:-( pořád se to bortí:-( Si s tím už nevím rady:(

Chtěl jsem tam dát i rok natočení. dám jej jako typ <b>int<b/> ale vůbec nefunguje - hází jiné čísla + se nevloží předchozí řádek. To taky nechápu, proč to tak je:-(

Kód pro otevření a čtení ze souboru:

Kód: Vybrat vše

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"      

FILE *output;
      
char znak;   
char nazev[20];
char zanr[10];
char role[50];
char zeme[20];
/*int rok;*/

int main(void)      
{
  printf("Seznam DVD\n==========\n\n");
  printf("n+Enter = novy zaznam\n\n\n");
           

  if ((input = fopen("soubor.txt", "r")) == NULL) {   
    printf("Chyba pri otvirani souboru!\n\nPro ukonceni programu stiskni libovolnou");   
    getch();         
  }

  while ((znak = getc(input)) != EOF)      
    putchar(znak);      
    getch(); 
    return 0;      
}


Kód pro zápis:

Kód: Vybrat vše

{             
             
               
     printf("Zadej nazev filmu: ");
     gets(nazev);
     printf("Zadej zanr filmu: ");
     gets(zanr);
     printf("Hlavni role: ");
     gets(role);
     printf("Zadej zemi puvodu: ");
     gets(zeme);
     /*printf("Zadej rok natoceni: ");
     scanf("%d", rok);*/
     getch();
     
     
     if ((   output = fopen("seznam.txt","a+"))!=NULL);
     
      {
        fprintf(output,"Nazev: " "%s\n", nazev);     
        fprintf(output,"Zanr: " "%s\n", zanr);
        fprintf(output,"Hlavni role: " "%s\n", role);
        fprintf(output,"Zeme puvodu: " "%s\n\n", zeme);
        /*fprintf(output,"Rok natoceni: ", rok);
        printf("Zaznam pridan");*/
       getch();
      }
      if (fclose(output) == EOF)
         printf("Chyba pri zavirani souboru!\n);
      }

Uživatelský avatar
melior
Level 3.5
Level 3.5
Příspěvky: 977
Registrován: září 07
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Mazání v souboru

Příspěvekod melior » 01 úno 2010 02:14

Cteni ze souboru: uprav podminku

Kód: Vybrat vše

if ((input = fopen("soubor.txt", "r")) == NULL) {   
    printf("Chyba pri otvirani souboru!\n\nPro ukonceni programu stiskni libovolnou");   
    getch();         
  }
/* TADY */
else {
  while ((znak = getc(input)) != EOF)     
    putchar(znak);     
    getch();
} /*a tady*/
    return 0;     


jinak se program i pri neotevreni souboru pokusi cist a spadne

co se ukladani / cteni roku tyce - : musis pouzit CCkovske funkce pro prevod cisla na string a naopak
tedy idealne cislo = atoi(znak) a naopak sprintf("%d", cislo)

mazani ze souboru nejde, musis jedine cely soubor nacist a potom znovu zapsat bez vybranych zaznamu (otevreny soubor pro cteni cist do nejakeho bufferu a pak buffer hazet do noveho pro zapis a vynechavat zaznamy ktere nepotrebujes pri znovuzapisovani

take si dovoluji upozornit ze gets() neulozi do retezce znak "\n", tedy ve vyslednem souboru budou zaznamy neodradkovane. poklud chces nacist i odradkovani, pouzij fgets()
if (count(legs)==6) bug
else feature;

Dvě monarchie v nejednotné Evropě...
Dvě koloniální říše v neklidném světě 23. století...
Jaderné mocnosti s historií osmi vzájemných válek...
Federativna kraljevina Jugoslavija a Císařství České


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Mazání fotek na google fotky
    od Kincl6 » 05 srp 2024 19:45 » v Vše ostatní (sw)
    0
    4022
    od Kincl6 Zobrazit poslední příspěvek
    05 srp 2024 19:45
  • Blokování stahovaných souborů
    od Riviera kid » 07 čer 2025 16:47 » v Windows 11, 10, 8...
    10
    2866
    od Riviera kid Zobrazit poslední příspěvek
    včera, 06:56
  • IDM hláška o nemožném stažení souboru Příloha(y)
    od bluenite » 04 črc 2024 11:08 » v Vše ostatní (inet)
    2
    4335
    od bluenite Zobrazit poslední příspěvek
    06 črc 2024 19:40
  • Velikost souboru a složek na disku
    od L.L » 05 úno 2025 11:50 » v Vše ostatní (sw)
    5
    3265
    od L.L Zobrazit poslední příspěvek
    05 úno 2025 17:42
  • Program na hledání poškozených souborů JPG Příloha(y)
    od Rosta_Kolmix » 09 lis 2024 11:01 » v Design a grafické editory
    2
    4499
    od Minapark Zobrazit poslední příspěvek
    15 lis 2024 11:04

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů