Edit části textového souboru[c++] – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Edit části textového souboru[c++] – C / C++ – Fórum – Programujte.comEdit části textového souboru[c++] – C / C++ – Fórum – Programujte.com

 

Jiří Kadlec
~ Anonymní uživatel
2 příspěvky
28. 11. 2019   #1
-
0
-

Ahoj, mám projekt do programování, jehož cílem je udělat konzolovou aplikaci na databázi pro sázkovou kancelář, parametry jsou, že musím vést záznamy o jednotlivých sportech, ligách, týmech, zápasech a kurzech na zápasy data musím ukládat do texťáku a z hotové aplikace musím umět jednotlivé záznamy umět přidávat, editovat a mazat... zatím mám +- tohle:  

# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <string.h>

struct sazky {
	char sport[30];
	char liga[40];
	char tym[20];
	char zapas[20];
	char kurz[10];
};

void zadej();
void edit();


int main()
{
	system("clr");
	int vyber;
	printf("1. vytvotit\n");
	printf("2. Editovat\n");
	printf("3. Smazat\n");
	printf("4. Odejit\n");

	scanf("%d", &vyber);

	switch (vyber)
	{
	case 1:
		zadej();
		break;
	case 2:
		edit();
		break;
	case 4: 
		exit(0);

	default:
		printf("Spatny vyber. Zadejte novou hodnotu.");
		main();
	}
	getchar();
	return 0;
}

void zadej()
{
	FILE* fp;
	fp = fopen("sazkova kancelar.txt", "w");

	char sport[30];
	char liga[40];
	char tym[20];
	char zapas[20];
	char kurz[10];

	printf("zadejte sport:\n ");
	scanf("%s", &sport);
	printf("zadejte ligu:\n ");
	scanf("%s", &liga);
	printf("zadejte tym:\n ");
	scanf("%s", &tym);
	printf("zadejte zapas:\n ");
	scanf("%s", &zapas);
	printf("zadejte kurz:\n ");
	scanf("%s", &kurz);
	
	fprintf(fp,"Sport: %s Liga: %s Tym: %s Zapas: %s Kurz: %s",sport,liga,tym,zapas,kurz);
	fclose(fp);
	
	return 0;
}
void edit()
{
	FILE* fp1;
	FILE* fp2;
	char puvod_s[200];
	char edit_s[200];
	char retezec[200];
	fp1 = fopen("sazkova kancelar.txt", "a+");
	fp2 = fopen("sazka_edit.txt", "a+");
	fgets(retezec, 200, fp1);
	printf("%s\n", retezec);
	printf("Zadejte sazku kterou chcete editovat:");
	scanf("%s", &puvod_s);
	fscanf(fp1, "%s", puvod_s);
	/*char target = "puvod_s";
	int vysl = -1;
	while (vysl=-1) {
		vysl = retezec.find(target, vysl + 1);
	};*/
		printf("Zadejte novou sazku: ");
		scanf("%s", edit_s);
		fprintf(fp2, "%s", edit_s);
	fclose(fp1);
	fclose(fp2);
	
	fp1 = fopen("sazkova kancelar.txt", "a+");
	fp2 = fopen("sazka_edit.txt", "a+");
	while (!feof(fp2))
	{
		fscanf(fp2, "%s", edit_s);
		fprintf(fp1, "%s", edit_s);
	}
	fclose(fp1);
	fclose(fp2);

	return 0;
}

momentálně nemám tušení jak napsat kód, který mi vybere ze záznamu dejme tomu třeba nějaký tým a změní ho nebo ho odstraní… Možná je to debilní způsob, kdyby vás prosím napadl lepší, byl bych moc vděčný... Kdyby se našel někdo kdo by mi dokázal pomoct ve formě naprogramování aspoň části toho, jsem ochotný finančně odměnit... Díky moc... 

Nahlásit jako SPAM
IP: 81.200.57.–
gna
~ Anonymní uživatel
1891 příspěvků
28. 11. 2019   #2
-
+1
-
Zajímavé

Kromě zapsání záznamu do souboru si tam udělej ještě načtení záznamu ze souboru a asi se ti to začne rýsovat.

Pokud na ty změny chceš jít tímhle stylem kopírování, tak místo dotyčného záznamu zapíšeš nový, nebo v případě mazání ho přeskočiš. A ty režimy pro fopen budou "r" pro čtení, "w" pro zápis a "a" pro přidávání.

Asi bude jednodušší načíst celý soubor do paměti, tam dělat změny a pak ho zase celý zapsat.

Nahlásit jako SPAM
IP: 213.211.51.–
Jiří Kadlec
~ Anonymní uživatel
2 příspěvky
29. 11. 2019   #3
-
0
-

#2 gna
Díky moc za rady... Nevím jak mám vybrat jeden záznam který chci přepsat a přepsat v něm jenom tu jednu věc kterou chci přepsat... díky za upřesnění těch režimů, jsem na elektro fakultě a k tomu předmětu za pár kreditů mám jenom pár přednášek kde se dělají banální základy, takže jsem nikdy nic jako práci se soubory v céčku neviděl... Jestli by vám by jste měl zájem a udělal mi ten základ nějak, rád bych vám za to zaplatil, protože já už jsem nad tím strávil nějakou dobu, zkusil jsem to asi třemi-čtyřmi způsoby, hledal jsem si články a příspěvky okolo toho tak by se to dalo udělat, ale je to prostě nad moje síly... Ani žádný kolega nemá tušení jak to udělat, je to nové téma od nového konzultanta který absolutně netrefil úroveň na které by ten projekt měl být.. Ještě jednou díky moc a přeji pěkný den.

Nahlásit jako SPAM
IP: 81.200.57.–
gna
~ Anonymní uživatel
1891 příspěvků
30. 11. 2019   #4
-
0
-

Ty banální základy stačí. Všechno, co potřebuješ, už tam v podstatě máš. 

nacti(co_zmenit)

switch (co_zmenit) {
case SPORT: nacti(zaznam.sport); break;
case TYM: nacti(zaznam.tym); break;
...
}
nacti(kde_hledat);
nacti(co_hledat);

switch (kde_hledat) {
case SPORT: vyhovuje(zaznam.sport, co_hledat); break;
...
}
Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
30. 11. 2019   #5
-
0
-

#3 Jiří Kadlec
Ono důležité je vytvořit si představu fungování a od toho se odrazit,, pokud to je pouze doplňkový předmět jde tam obvykle hlavně o hledání a poskládání informací a vymyšlení algoritmu.

V tvém případě jde o představu a vytvoření základní kostry, u konzolové aplikace to může být např. :

1. výběr souboru ke zpracování

2. načtení záznamů ze souboru do struktur

3. zobrazení záznamů

4. výběr záznamu a činnosti

5. provedení změn

6. uložení a ukončení nebo opakování od bodu 3.

nebo bez zobrazení, hledáním

3. zadat co se hledá

4. výběr činosti

5. a 6 stejné

Většina bodů se dá udělat společných nebo jen s drobnými rozdíly.

Nahlásit jako SPAM
IP: 185.112.167.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 137 hostů

Podobná vlákna

Šifrování textového souboru — založil skodik.o

Cteni z textoveho souboru — založil tomas

Mapa z textového souboru? — založil hráč

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý