Il s'agit d'un cas où les guillemets simples et les guillemets doubles ont des significations différentes.
""
est traduit en (const char[1])""
par le compilateur. Cela vous permet de l'utiliser dans les initialisations de tableaux de caractères.
''
ne l'est pas, et serait une chaîne vide non terminée. Comme vous ne pouvez pas savoir si une chaîne est vide sans la terminer, ce n'est pas un code valide. D'où l'erreur.
Vous avez certainement voulu faire
c[i] = '\0';
Si c
était en effet une chaîne de texte, ceci fixe la longueur de la chaîne à i en la terminant sur ce caractère.
Si c
n'était pas réellement prévu comme une chaîne de texte, c'est toujours la valeur que vous êtes censé utiliser pour signifier qu'il n'y a rien, parce que c'est faux, et tout autre caractère est vrai.
Si tu voulais vraiment mettre un espace ici, alors tu voulais
c[i] = ' ';