UTNianos

Versión completa: Ayuda con printf y su formato %s
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Nuestro profe nos obligó para el parcial investigar la diferencia entre
printf("%s", vector);
y
printf(vector);

siendo el vector una cadena de caracteres que siempre termina en /n/0 por ejemplo: "prueba/n/0"
(es uno de los programas del libro K&K)

nos preguntó por qué en el libro aparece la primera forma y no la segunda?

No entiendo el por qué... ya que probé las dos formas y funcionan perfecto =S

Espero puedan ayudarme!
Gracias!




#include <stdio.h>
#define MAXLINE 1000 /* maximum input line length */

int getline(char line[], int maxline);
void copy(char to[], char from[]);

/* print the longest input line */
main()
{
int len; /* current line length */
int max; /* maximum length seen so far */
char line[MAXLINE]; /* current input line */
char longest[MAXLINE]; /* longest line saved here */
max = 0;
while ((len = getline(line, MAXLINE)) > 0)
if (len > max) {
max = len;
copy(longest, line);
}
if (max > 0) /* there was a line */
printf("%s", longest);
return 0;
}

/* getline: read a line into s, return length */
int getline(char s[],int lim)
{
int c, i;
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}

/* copy: copy 'from' into 'to'; assume to is big enough */
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}

Porque la función printf necesita que le pongas algo entre comillas (" ") y el formato de ese algo (%). En tu caso printf("%s",vector), estás diciendo que vector es un string (%s), o en su defecto un char*.
(30-05-2013 23:41)grmnn escribió: [ -> ]Porque la función printf necesita que le pongas algo entre comillas (" ") y el formato de ese algo (%). En tu caso printf("%s",vector), estás diciendo que vector es un string (%s), o en su defecto un char*.

UP!!


Estoy en la misma y no entiendo esa rta =(
Yo estoy en la misma!! Y más ahora q tengo parcial hoy a la noche!!
Quizas si todos contestemos lo mismo lo toma como válido (??)
Por lo que pude comprender, el printf es una impresión con formato, por lo que necesita de una constante literal.. De ahí se pasa el "%s", ya que es necesario es necesario pasarle algo entre comillas, y en este caso se le pasa el formato de string que es %s..
Te doy un ejemplo, capaz que te ayuda.

El método printf es para imprimir texto con formato, por ejemplo agregar saltos de línea al texto.




System.out.printf( "%s\n%s","Bienvenido a", "la programacion en Java!" );


En este ejemplo, \n indica al compilador que debe imprimir un salto de línea entre los argumentos %s y %s.
El primer %s representa al string "Bienvenido a", mietras que el segundo %s es el string "la programacion en Java!"

En pocas palabras %s es como una variable que toma el valor de lo que esté en la correspondiente posición luego del primer argumento, (en este ejemplo hay 3 argumentos: <%s\n%s> - <Bienvenido a> - <la programacion en Java!>)
URLs de referencia