Freopen Stdin Binære Alternativer


Det enkle svaret er nei. Modusen bestemmes når iostream-objektet er konstruert, og kan ikke endres senere. Noen implementeringer kan gi et middel til å gjøre det senere, men dette er ikke standardisert. På enkelte implementeringer kan det være at en freopen på stdout endrer modusen, selv om jeg formelt mener at dette er forbudt i C. (Det er implementering definert i C.) Og tilsynelatende virker det ikke på implementeringen din. Du har best mulighet til å finne ut hvordan systemet navngir konsollenheten (devtty under Unix CONS. Jeg tror, ​​under Windows), åpne den i ønsket modus og send ut til den. besvart apr 16 14 kl 11: 34Reopen strøm med annen fil eller modus Reuses stream for å enten åpne filen spesifisert av filnavn eller for å endre tilgangsmodus. Hvis et nytt filnavn er angitt, forsøker funksjonen først å lukke en hvilken som helst fil som allerede er knyttet til strømmen (tredje parameter) og demonterer den. Deretter åpner freopen, uavhengig av om den aktuelle streamen ble avsluttet eller ikke, filen som er spesifisert av filnavn og knytter den til strømmen, akkurat som fopen ville gjøre med den angitte modusen. Hvis filnavnet er en nullpeker, forsøker funksjonen å endre modusen for strømmen. Selv om en bestemt implementering av biblioteket kan begrense endringene tillatt og under hvilke omstendigheter. Feilindikatoren og eof-indikatoren blir automatisk fjernet (som om clearerr ble kalt). Denne funksjonen er spesielt nyttig for omdirigering av forhåndsdefinerte strømmer som stdin. stdout og stderr til bestemte filer (se eksempelet nedenfor). Parametre filnavn C-streng som inneholder navnet på filen som skal åpnes. Dens verdi skal følge filnavnspesifikasjonene for løpemiljøet og kan inneholde en sti (hvis den støttes av systemet). Hvis denne parameteren er en nullpeker, forsøker funksjonen å endre modusen til strømmen. som om filnavnet som for øyeblikket var tilknyttet denne strømmen, hadde blitt brukt. modus C-streng som inneholder en filtilgangsmodus. Det kan være: Les: Åpne fil for inngangsoperasjoner. Filen må eksistere. skriv: Lag en tom fil for utdataoperasjoner. Hvis en fil med samme navn allerede eksisterer, blir innholdet kassert og filen behandles som en ny, tom fil. legg til: Åpne fil for utdata på slutten av en fil. Utdataoperasjoner skriver alltid data på slutten av filen, og utvider den. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) ignoreres. Filen er opprettet hvis den ikke eksisterer. readupdate: Åpne en fil for oppdatering (både for inngang og utgang). Filen må eksistere. writeupdate: Lag en tom fil og åpne den for oppdatering (både for inngang og utgang). Hvis en fil med samme navn allerede finnes, blir innholdet kassert og filen behandles som en ny, tom fil. Appendupdate: Åpne en fil for oppdatering (både for inngang og utdata) med alle utdataoperasjoner skriving data på slutten av filen. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) påvirker neste inngangsoperasjoner, men utdataoperasjoner flytter posisjonen tilbake til slutten av filen. Filen er opprettet hvis den ikke eksisterer. Med modus-spesifiseringene ovenfor er filen åpen som en tekstfil. For å åpne en fil som en binær fil. en b-karakter må inkluderes i modusstrengen. Denne tilleggsbildet kan enten legges til i enden av strengen (dermed gjøres følgende sammensatte moduser: rb, wb, ab, rb, wb, ab) eller settes inn mellom brevet og tegnet for blandemodiene (rb, wb, ab). Den nye C-standarden (C2011, som ikke er en del av C), legger til en ny standard underspesifikator (x), som kan legges til en hvilken som helst w spesifier (for å danne wx. Wbx, wx eller wbxwbx). Denne underspesifikasjonen tvinger funksjonen til å mislykkes hvis filen eksisterer, i stedet for å overskrive den. Hvis flere tegn følger sekvensen, avhenger oppførselen av implementeringen av biblioteket: Noen implementeringer kan ignorere flere tegn, slik at for eksempel en ekstra t (noen ganger brukes til å uttrykke en tekstfil eksplisitt) aksepteres. På enkelte biblioteksimplementeringer kan åpning eller opprettelse av en tekstfil med oppdateringsmodus behandle strømmen i stedet som en binær fil. Stream-pekeren til en FIL-objekt som identifiserer strømmen som skal gjenåpnes. Returner verdi Hvis filen gjenopprettes, returnerer funksjonen pekeren som passet som parameterstrøm. som kan brukes til å identifisere den gjenåpnede strømmen. Ellers returneres null nullpeker. På de fleste biblioteksimplementeringer er også errno-variabelen satt til en systemspesifikk feilkode ved feil. Åpner filen hvis navn er spesifisert i parameterfilnavnet og knytter det sammen med en strøm som kan identifiseres i fremtidig operasjon av FIL-pekeren, returneres . Operasjonene som er tillatt på strømmen og hvordan disse utføres, er definert av modusparameteren. Den returnerte strømmen er fullt buffert som standard hvis det ikke er kjent å ikke referere til en interaktiv enhet (se setbuf). Den returnerte pekeren kan skilles fra filen ved å ringe fclose eller freopen. Alle åpne filer lukkes automatisk ved normal programavslutning. Det løpende miljøet støtter minst FOPENMAX-filer åpne samtidig. Parametre filnavn C-streng som inneholder navnet på filen som skal åpnes. Dens verdi skal følge filnavnspesifikasjonene for løpemiljøet og kan inneholde en sti (hvis den støttes av systemet). modus C-streng som inneholder en filtilgangsmodus. Det kan være: Les: Åpne fil for inngangsoperasjoner. Filen må eksistere. skriv: Lag en tom fil for utdataoperasjoner. Hvis en fil med samme navn allerede eksisterer, blir innholdet kassert og filen behandles som en ny, tom fil. legg til: Åpne fil for utdata på slutten av en fil. Utdataoperasjoner skriver alltid data på slutten av filen, og utvider den. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) ignoreres. Filen er opprettet hvis den ikke eksisterer. readupdate: Åpne en fil for oppdatering (både for inngang og utgang). Filen må eksistere. writeupdate: Lag en tom fil og åpne den for oppdatering (både for inngang og utgang). Hvis en fil med samme navn allerede finnes, blir innholdet kassert og filen behandles som en ny, tom fil. Appendupdate: Åpne en fil for oppdatering (både for inngang og utdata) med alle utdataoperasjoner skriving data på slutten av filen. Reposisjoneringsoperasjoner (fseek. Fsetpos. Tilbakespoling) påvirker neste inngangsoperasjoner, men utdataoperasjoner flytter posisjonen tilbake til slutten av filen. Filen er opprettet hvis den ikke eksisterer. Med modus-spesifiseringene ovenfor er filen åpen som en tekstfil. For å åpne en fil som en binær fil. en b-karakter må inkluderes i modusstrengen. Denne tilleggsbildet kan enten legges til i enden av strengen (dermed gjøres følgende sammensatte moduser: rb, wb, ab, rb, wb, ab) eller settes inn mellom brevet og tegnet for blandemodiene (rb, wb, ab). Den nye C-standarden (C2011, som ikke er en del av C), legger til en ny standard underspesifikator (x), som kan legges til en hvilken som helst w spesifier (for å danne wx. Wbx, wx eller wbxwbx). Denne underspesifikasjonen tvinger funksjonen til å mislykkes hvis filen eksisterer, i stedet for å overskrive den. Hvis flere tegn følger sekvensen, avhenger oppførselen av implementeringen av biblioteket: Noen implementeringer kan ignorere flere tegn, slik at for eksempel en ekstra t (noen ganger brukes til å uttrykke en tekstfil eksplisitt) aksepteres. På enkelte biblioteksimplementeringer kan åpning eller opprettelse av en tekstfil med oppdateringsmodus behandle strømmen i stedet som en binær fil. Tekstfiler er filer som inneholder sekvenser av tekstlinjer. Avhengig av miljøet der applikasjonen kjører, kan det forekomme en spesiell karakterkonvertering i inputoutput-operasjoner i tekstmodus for å tilpasse dem til et systemspesifikt tekstfilformat. Selv om det ikke skjer noen konverteringer i enkelte miljøer, og både tekstfiler og binære filer behandles på samme måte, bruker den aktuelle modusen økt portabilitet. For filer som er åpne for oppdatering (de som inneholder et tegn), som både inngangs - og utgangsoperasjoner er tillatt, skal strømmen skylles (fflush) eller reposisjoneres (fseek. Fsetpos. Tilbakespoling) før en leseoperasjon som følger en skriveoperasjon. Strømmen skal reposisjoneres (fseek. Fsetpos. Tilbakespoling) før en skriveoperasjon som følger en lesoperasjon (hver gang operasjonen ikke nå slutten av filen). Returner verdi Hvis filen er åpnet, returnerer funksjonen en peker til en FILE-objekt som kan brukes til å identifisere strømmen i fremtidige operasjoner. Ellers returneres null nullpeker. På de fleste biblioteksimplementeringer er også errno-variabelen satt til en systemspesifikk feilkode ved feil.

Comments

Popular Posts