2010-01-07 9 views
6

Um eine formatierte Datei zu erstellen, möchte ich fprintf verwenden. Es muss char* Parameter erhalten, aber ich habe mehrere String-Variablen. Wie kann ich fprintf verwenden?fprintf mit String-Argument

+2

Können Sie einen Beispielcode veröffentlichen, der uns zeigt, was die Eingabe ist und was die erwartete Ausgabe ist? – Naveen

+0

Ich habe etwas wie dieses: ... string St1, St2; ... ifstream In ("Text.txt"); In >> St1 >> St2; ... dass St1 und St2 initialisiert werden, indem von einer Datei von Ifstream() - Funktion gelesen wird. Jetzt möchte ich sie in einer anderen Datei mit der Funktion fprintf() schreiben. fprintf ("% s% s", St1, St2); Aber ich denke, fprint bekommen char * nicht Zeichenfolge. – aryan

+0

Das erste Argument für fprintf sollte eine FILE * sein, kein char *. In C gibt es keine "Zeichenfolge", nur "char *". Sind Sie sicher, dass Sie diese Frage nicht mit "C++" und nicht mit "C" versehen wollten? –

Antwort

20

Die grundlegende Verwendung von fprintf mit Streichern sieht wie folgt aus:

char *str1, *str2, *str3; 
FILE *f; 
// ... 

f = fopen("abc.txt", "w"); 
fprintf(f, "%s, %s\n", str1, str2); 
fprintf(f, "more: %s\n", str3); 
fclose(f); 

Sie mehrere Strings durch die Verwendung mehrerer %s Formatbezeich hinzufügen können, und Sie können wiederholte Anrufe fprintf verwenden, um die Datei schrittweise zu schreiben.

Wenn Sie C++ haben std::string Objekte können Sie ihre c_str() Methode verwenden, um eine const char* geeignet zu bekommen mit fprintf zu verwenden:

std::string str("abc"); 
fprintf(f, "%s\n", str.c_str()); 
+0

Vielen Dank. Es klappt. – aryan

3

fprintf mit mehreren Strings ist ziemlich einfach, wenn es das ist, was Sie nach, z.B.

const char* charString1 = "This"; 
const char* charString2 = "is a"; 
const char* charString3 = "test"; 

fprintf(fileHandle, "%s, %s, %s", charString1, charString2, charString3); 
+0

Ich habe etwas wie dieses: ... string St1, St2; ... ifstream In ("Text.txt"); In >> St1 >> St2; ... , dass St1 und St2 initialisiert werden, indem sie von einer Datei mit der Funktion ifstream() gelesen werden. Jetzt möchte ich sie in einer anderen Datei mit der Funktion fprintf() schreiben. fprintf ("% s% s", St1, St2); Aber ich denke, fprint bekommen char * nicht Zeichenfolge. – aryan

1

fprintf arbeitet analog zu printf im Formatbezeichner, können Sie so viele% s erwähnen, wie Sie die entsprechende Anzahl von String-Argumenten wollen und geben. Wenn Sie eine detailliertere Antwort wünschen, senden Sie bitte Ihren Code.

Verwandte Themen