Comment puis-je imprimer une chaîne non terminée par null à l'aide de printf, en supposant que je connaisse la longueur de la chaîne au moment de l'exécution?
Réponses
Trop de publicités?La réponse fournie par @KennyTM est grande, mais avec une subtilité.
En général, si la chaîne est non null, "terminé", mais a un caractère nul dans le milieu, printf("%.*s", length, string);
ne fonctionne pas comme prévu. C'est parce que l' %.*s
chaîne de format demande printf
imprimer un maximum de length
caractères, pas exactement length
caractères.
Je préfère utiliser la solution générale l'a souligné @William Pursell dans un commentaire sous l'OP:
fwrite(string, sizeof(char), length, stdout);
Voici un exemple de code:
#include <stdio.h>
int main(void) {
size_t length = 5;
char string[length];
string[0] = 'A';
string[1] = 'B';
string[2] = 0; // null character in the middle
string[3] = 'C';
string[4] = 'D';
printf("With printf: %.*s\n", length, string);
printf("With fwrite: ");
fwrite(string, sizeof(char), length, stdout);
printf("\n");
return 0;
}
Sortie:
With printf: AB
With fwrite: AB CD