Supposons que vous avez une chaîne qui n'est PAS null et que vous connaissez sa taille exacte, alors comment pouvez-vous l'impression que la chaîne de printf en C? Je me souviens d'une telle méthode, mais je ne peux pas savoir savoir...
Réponses
Trop de publicités?Voici une explication de la façon dont %.*s
œuvres, et où il est spécifié.
Les spécifications de conversion dans un printf modèle de chaîne ont la forme générale:
% [ param-no $] flags width [ . precision ] type conversion
ou
% [ param-no $] flags width . * [ param-no $] type conversion
La deuxième forme est pour obtenir la précision de la liste des arguments:
Vous pouvez également spécifier une précision de ‘*'. Cela signifie que l'argument suivant dans la liste d'arguments (avant la valeur réelle à être imprimé) est utilisé comme la précision. La valeur doit être un int, et est ignoré s'il est négatif.
- Sortie de la conversion de la syntaxe dans la glibc manuel
Pour %s
chaîne de formatage, de la précision a une signification particulière:
Une précision peut être spécifié pour indiquer le nombre maximal de caractères à écrire; sinon caractères dans la chaîne, mais pas y compris le caractère de fin null sont écrits dans le flux de sortie.
- D'autres conversions des sorties dans la glibc manuel
Autres variantes:
-
"%*.*s", maxlen, maxlen, val
aura droit justifier, en insérant des espaces avant; -
"%-*.*s", maxlen, maxlen, val
sera la justification à gauche.
Vous pouvez utiliser un fwrite() sur la sortie standard stdout!
fwrite(your_string, sizeof(char), number_of_chars, stdout);
De cette façon, vous aurez la sortie de la première caractères (nombre défini dans number_of_chars variable ) dans un fichier, dans ce cas vers stdout (sortie standard, votre écran)!
#include<string.h>
int main()
{
/*suppose a string str which is not null terminated and n is its length*/
int i;
for(i=0;i<n;i++)
{
printf("%c",str[i]);
}
return 0;
}
J'ai édité le code,heres une autre façon:
#include<stdio.h>
int main()
{
printf ("%.5s","fahaduddin");/*if 5 is the number of bytes to be printed and fahaduddin is the string.*/
return 0;
}