web-dev-qa-db-fra.com

Convertir un caractère en chaîne en C

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

15
user1911575

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. 

8
Adam

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

5
LihO

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.

3
ThoAppelsin

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';
2
Taiki

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);
1
Ħđ Ťǿųfik
//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
1
Omar Said

Voici un exemple de travail:

printf("-%s-", (char[2]){'A', 0});

Ceci affichera -A-

0
Jean Sordes

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.