Parce que vous devez faire un ch pointeur à un personnage. Le compilateur aurait dû vous avertir que vous étiez en train d'assigner un pointeur de caractère à une variable de caractère, et il aurait dû vous avertir que vous essayiez de printf("%s")
sur une variable sans pointeur de caractères - si ce n'était pas le cas, vous devriez augmenter le niveau d'avertissement de votre compilateur!
Tout en ajoutant que l'un peu, étoile facilement oublié fait fonctionner correctement:
#include <stdio.h>
int main()
{
char array1[] = "Hello World\n";
char *ch = array1; printf(" %s" , ch);
return 0;
}
J'ai aussi pris la liberté d'ajouter une nouvelle ligne à la fin de votre chaîne et de le mettre dans une fonction main
appropriée, pour l'exhaustivité.
Je viens de remarquer que vous avez dit que vous « n'êtes pas autorisé à le faire avec des pointeurs » - à peu près la seule façon de le faire est d'imprimer le caractère par caractère jusqu'à ce que vous frappez un null terminator:
#include <stdio.h>
int main()
{
char array1[] = "Hello World\n";
int i;
for (i = 0 ; array1[i] != '\0' ; i++)
{
printf("%c", array1[i]);
}
return 0;
}
sortie:
$ ./a.out
Hello World
une approche plus robuste serait de mettre aussi une limite sur le nombre de caractères que vous imprimez, mais juste pour vérifier \0
est probablement assez bien pour ce qui semble être un devoir.
Comment vous a-t-on demandé de ne pas le faire avec un pointeur, mais l'erreur était qu'il vous manquait un '*' de la notation de pointeur? –