Comment convertir un caractère en chaîne en C? J'utilise actuellement c = fgetc(fp)
qui renvoie un caractère. Mais j'ai besoin d'une chaîne pour être utilisée dans strcpy
Pour répondre à la question sans trop y lire, je voudrais
char str[2] = "\0"; /* gives {\0, \0} */
str[0] = fgetc(fp);
Vous pouvez utiliser la deuxième ligne d'une boucle avec les opérations de chaîne que vous souhaitez conserver en utilisant des caractères comme des chaînes.
Utiliser fgetc(fp)
uniquement pour pouvoir appeler strcpy(buffer,c);
ne semble pas correct.
Vous pouvez simplement construire ce tampon vous-même:
char buffer[MAX_SIZE_OF_MY_BUFFER];
int i = 0;
char ch;
while (i < MAX_SIZE_OF_MY_BUFFER - 1 && (ch = fgetc(fp)) != EOF) {
buffer[i++] = ch;
}
buffer[i] = '\0'; // terminating character
Notez que cela repose sur le fait que vous lirez moins de MAX_SIZE_OF_MY_BUFFER
caractères
Vous pouvez répondre à de nombreuses réponses, mais si vous voulez simplement le faire pour pouvoir l’utiliser avec strcpy
, vous pouvez procéder comme suit:
...
strcpy( ... , (char[2]) { (char) c, '\0' } );
...
La partie (char[2]) { (char) c, '\0' }
générera temporairement une chaîne terminée par un caractère nul à partir d'un caractère c
.
De cette façon, vous pouvez éviter de créer de nouvelles variables pour quelque chose que vous avez déjà entre vos mains, à condition que vous n'ayez besoin que de cette chaîne à caractère unique une seule fois.
Un code comme ça devrait marcher:
int i = 0;
char string[256], c;
while(i < 256 - 1 && (c = fgetc(fp) != EOF)) //Keep space for the final \0
{
string[i++] = c;
}
string[i] = '\0';
J'utilise ceci pour convertir char en chaîne (un exemple):
char c = 'A';
char str1[2] = {c , '\0'};
char str2[5] = "";
strcpy(str2,str1);
//example
char character;//to be scanned
char merge[2];// this is just temporary array to merge with
merge[0] = character;
merge[1] = '\0';
//now you have changed it into a string
Voici un exemple de travail:
printf("-%s-", (char[2]){'A', 0});
Ceci affichera -A-
Pour votre information, vous n'avez pas de type de données chaîne en C. Utilisez un tableau de caractères pour stocker la valeur et la manipuler. Changez votre variable c en un tableau de caractères et utilisez-la dans une boucle pour obtenir des valeurs.
char c[10];
int i=0;
while(i!=10)
{
c[i]=fgetc(fp);
i++;
}
Vous pouvez également utiliser des pointeurs, allouer de la mémoire de manière dynamique et attribuer des valeurs.