2010-01-07 11 views
6

Para crear un archivo formateado, quiero utilizar fprintf. Debe obtener los parámetros char*, pero tengo varias variables de cadena. ¿Cómo puedo usar fprintf?fprintf con string argumento

+2

¿Puede publicar un código de muestra que nos muestre cuál es la entrada y cuál es el resultado esperado? – Naveen

+0

Tengo algo como esto: ... cadena St1, St2; ... ifstream In ("Texto.txt"); En >> St1 >> St2; ... que St1 y St2 se inicializan al leer un archivo mediante la función ifstream(). Ahora quiero escribirlos en otro archivo mediante la función fprintf(). fprintf ("% s% s", St1, St2); Pero creo que fprint obtiene char * not string. – aryan

+0

El primer argumento para fprintf debe ser un ARCHIVO *, no un char *. En C no hay "cadena", solo "char *". ¿Estás seguro de que no quisiste etiquetar esta pregunta con "C++" en lugar de "c"? –

Respuesta

20

El uso básico de fprintf con cuerdas se parece a esto:

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); 

Puede añadir varias cadenas utilizando varios %s especificadores de formato y se puede utilizar repetidas llamadas a fprintf para escribir el archivo de forma incremental.

Si tiene C++ std::string objetos que puede utilizar su método c_str() para conseguir una adecuada const char* de usar con fprintf:

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

Muchas gracias. Funciona. – aryan

3

fprintf con múltiples cadenas es bastante simple, si eso es lo que está después, por ejemplo,

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

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

Tengo algo como esto: ... cadena St1, St2; ... ifstream In ("Texto.txt"); En >> St1 >> St2; ... que St1 y St2 se inicializan al leer un archivo mediante la función ifstream(). Ahora quiero escribirlos en otro archivo mediante la función fprintf(). fprintf ("% s% s", St1, St2); Pero creo que fprint obtiene char * not string. – aryan

1

fprintf funciona análoga a printf, en el especificador de formato, se puede mencionar tantas% s como desee y dar el correspondiente número de argumentos de cadena. Si desea una respuesta más detallada, publique su código.

Cuestiones relacionadas