Permalänk
Medlem

C/C++ lagra output o txt-fil

tjenare!

sitter här och knåpar lite C/C++ i skolan. Har sökt lite här i forumet, men har inte lyckats finna svaret på min fråga. min fråga är följande; hur lagrar jag output i en extern fil? ex en .txt. istället för att köra en cout till skärmen, så till ngn fil, eller nåt?

Visa signatur

» NAS/HTPC: Intel X3210 @ [4x]3.2GHz | Gigabyte GA-P35-DQ6 | 2 GB Corsair Dominator @ 1100 MHz | GeForce GT 430 | 2TB (raid 1)
» Asus Transformer Pad
» HTC One X

Permalänk
Medlem

Output-data? Du menar det som skrivs till stdout (skärmen)? program > foo.txt måste ju vara lättast.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sunray
Output-data? Du menar det som skrivs till stdout (skärmen)? program > foo.txt måste ju vara lättast.

Jee, menar cout till en fil alltså, inte skriva ut det på skärmen. Jag är helt n00b vad gäller det.

Visa signatur

» NAS/HTPC: Intel X3210 @ [4x]3.2GHz | Gigabyte GA-P35-DQ6 | 2 GB Corsair Dominator @ 1100 MHz | GeForce GT 430 | 2TB (raid 1)
» Asus Transformer Pad
» HTC One X

Permalänk
Medlem

cout kommer att skriva till foo.txt om du gör som ovan.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Hedersmedlem

Om du vill göra det i själva programmet och inte med >, kan du ta dig en titt på ofstream (eller om det var ostream?).

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Medlem

#include <fstream>

std:: ofstream fout("minfil.txt");
fout << "Hej hopp din gamla kråka" ;

Permalänk
Medlem

cerr kan du omdirigera så att den skriver till fil (eller nått) istället för skärmen. Ganska smidigt, då slipper man ändra på en massa..

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

tackar alla för svaren. tänkte att ni kanske ville se min kodsnutt. nu då. än så länge är den helt betydelselös, men iaf ;).

#include <iostream> #include <fstream> using namespace std; int main() { char namn[1000]; ofstream output("text_out.txt",ios::app); if(!output) cout << "Output-filen gick ej att öppna.\n\n"; cout << "Ange fullständigt namn, dock max 1000 tecken:\n" cin.getline(namn, 1000); output << endl << namn; return 0; }

Visa signatur

» NAS/HTPC: Intel X3210 @ [4x]3.2GHz | Gigabyte GA-P35-DQ6 | 2 GB Corsair Dominator @ 1100 MHz | GeForce GT 430 | 2TB (raid 1)
» Asus Transformer Pad
» HTC One X

Permalänk

Haha, fullständigt namn på 1000 tecken Påminner mig om den där flickan i Guiness rekordbok som har > 600 olika namn.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Ghost_Overdoze
Haha, fullständigt namn på 1000 tecken Påminner mig om den där flickan i Guiness rekordbok som har > 600 olika namn.

haha, ok ;).. vad kan man skriva för att slippa ha ett värde där då? typ true eller nåt ? nae

Visa signatur

» NAS/HTPC: Intel X3210 @ [4x]3.2GHz | Gigabyte GA-P35-DQ6 | 2 GB Corsair Dominator @ 1100 MHz | GeForce GT 430 | 2TB (raid 1)
» Asus Transformer Pad
» HTC One X

Permalänk
Medlem

char *namn ?

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk

Smidigt med C++. Håller själv på med C just nu.
Då är det till att göra pekare av typen FILE för att rota i textfiler.

Här är ett tvättäckta exempel:

// Läser in från textfil till en STRUCT. void ReadFromFile(Deltagare *lista) { FILE *fp; // Pekare av typen FILE. Deltagare *temp, *help=lista; fp = fopen("deltag.txt","r"); // Öppnar filen "deltag.txt", läser. if(fp!=NULL) // NULL returneras vid knas. { temp=Init(); while(!feof(fp)) // Så länge som vi inte får en EOF. { fscanf(fp, "%d", &temp->start_nr); fscanf(fp, "%s", temp->fornamn); fscanf(fp, "%s", temp->efternamn); fscanf(fp, "%s", temp->land); help->next=temp; help=temp; temp=Init(); } // WHILE free(temp); // Frigör minnet. fclose(fp); // Stäng filen. } // IF else printf("\n Filen finns inte"); } // ReadFromFile()

Det är förvisso när man läser FRÅN en fil, fast det kan ju vara kul att kolla skildnaden mellan C och C-pluchpluch.

Visa signatur

/ SvSm
- Datorer ska synas men inte höras.
AMD Barton 2600+, 1024 DDRAM 400 @ 333, ASUS A7V880, Radeon 9800 Pro, Eizo FlexScan L557.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Myris
char *namn ?

Ingen bra idé om man inte allokerar minne ordentligt, så vitt jag vet...

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Thomas
Ingen bra idé om man inte allokerar minne ordentligt, så vitt jag vet...

får la testa det iaf ;). ngt annat som man kan göra annars?

Visa signatur

» NAS/HTPC: Intel X3210 @ [4x]3.2GHz | Gigabyte GA-P35-DQ6 | 2 GB Corsair Dominator @ 1100 MHz | GeForce GT 430 | 2TB (raid 1)
» Asus Transformer Pad
» HTC One X

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av SiBBoR
haha, ok ;).. vad kan man skriva för att slippa ha ett värde där då? typ true eller nåt ? nae

Om du kör C++ (vilket du gör nu) kan du ju köra med std::string.

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Medlem

#include <string> #include <fstream> #include <iostream> int main() { std::string namn; std::cout << "ange namn: "; std::getline(fin, namn); std::ofstream fout("result.txt") if(fout.fail()) std:cout << "Kunde inte öppna \"result.txt\" << std::endl; fout << namn; }

Visa signatur

{|XSX|PS3|PS4|}

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Svartsmurfen
Smidigt med C++. Håller själv på med C just nu.
Då är det till att göra pekare av typen FILE för att rota i textfiler.

FILE* äger ju
Gillar inte ofstreams.. man får så lite kontroll med dom. Känns som man jobbar närmare datorn med FILE*. Ja över huvudtaget i C.. därför det är rekommenderat att börja med C så man lär sig lite om datorn, bit och annat skoj

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk
Citat:

Ursprungligen inskrivet av IcE
FILE* äger ju
Gillar inte ofstreams.. man får så lite kontroll med dom. Känns som man jobbar närmare datorn med FILE*. Ja över huvudtaget i C.. därför det är rekommenderat att börja med C så man lär sig lite om datorn, bit och annat skoj

Jo, det är mer kontroll, och kontroll känns ju alltid bra. Fast om man ska göra någonting "bara lite snabbt" så blir det ju lätt lite omständigt. Fast C äger, tycker jag.

Visa signatur

/ SvSm
- Datorer ska synas men inte höras.
AMD Barton 2600+, 1024 DDRAM 400 @ 333, ASUS A7V880, Radeon 9800 Pro, Eizo FlexScan L557.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av ollel
#include <fstream>

std:: ofstream fout("minfil.txt");
fout << "Hej hopp din gamla kråka" ;

Det var glasklart, tack!

Men om jag sedan vill ta in och visa samma txt fil i programmet.
D.V.S att Hej hopp din gamla kråka visas i det här fallet. Hur gör man då?

Permalänk
Medlem

#include <iostream> #include <fstream> int main() { std::ifstream io_in("fil.txt"); if(io_in.fail()) std::cout << "kunde inte öppna \"fil.txt\"\n"; std::string input_buffer; while(!io_in.eof()) { io_in >> input_buffer; std::cout << input_buffer << "\n" } }

Visa signatur

{|XSX|PS3|PS4|}

Permalänk
Citat:

Ursprungligen inskrivet av SiBBoR
tackar alla för svaren. tänkte att ni kanske ville se min kodsnutt. nu då. än så länge är den helt betydelselös, men iaf ;).

#include <iostream> #include <fstream> using namespace std; int main() { char namn[1000]; ofstream output("text_out.txt",ios::app); if(!output) cout << "Output-filen gick ej att öppna.\n\n"; cout << "Ange fullständigt namn, dock max 1000 tecken:\n" cin.getline(namn, 1000); output << endl << namn; return 0; }

Provade att köra den och märkte att du har glömt ett ; vid ett ställe
Dom borde bygga in en räknare för att se hur många gånger man glömt ;-tecknet för det kan jag lova att jag gjort miljarder gånger.

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem

jag måste dock höja ett varningens finger för:

cin.getline(namn, 1000);

vissa versioner av MSVC har ett problem när du läser in till strömmar på det där viset; du KAN behöva trycka på enter 2ggr FÖRSTA gången du läser in med cin.getline.
de kommande gångerna verkar ok

Visa signatur

{|XSX|PS3|PS4|}