Me gustaría crear un búfer de cadenas para hacer un montón de procesamiento, formatear y finalmente escribir el búfer en un archivo de texto usando una funcionalidad de estilo C sprintf
en Python. Debido a las declaraciones condicionales, no puedo escribirlas directamente en el archivo.sprintf like funcionalidad en Python
por ejemplo seudo código:
sprintf(buf,"A = %d\n , B= %s\n",A,B)
/* some processing */
sprint(buf,"C=%d\n",c)
....
...
fprintf(file,buf)
Así que en el archivo de salida que tenemos este tipo de O/P:
A= foo B= bar
C= ded
etc...
Editar, para aclarar mi pregunta:
buf
es una El búfer grande contiene todas estas cadenas que se han formateado con sprintf. Según sus ejemplos, buf
solo contendrá valores actuales, no más antiguos. por ejemplo, por primera vez en buf
me escribió A= something ,B= something
tarde C= something
se adjunta en la misma buf
, pero en su Python responde buf
incluye solamente último valor, que no es que quiero - quiero buf
que tienen todos los printf
s que he hecho desde el principio, como en C
.
Esta es una gran pregunta, y creo que ninguna de estas respuestas se acercan a la solución de este. No deseo hacer algo como "% s% s% s"% (a, b, c), quiero proporcionar una lista de argumentos para una función y ver una cadena en la salida. – dividebyzero
Esa no es la forma en que sprintf() funciona en C. (Escribe el contenido al principio de 'buf', no al final.) Probablemente funcione mejor usar una matriz de cadenas, luego unirlas antes de escribir al archivo. – yam655