web-dev-qa-db-de.com

Char in String in C konvertieren

Wie konvertiere ich ein Zeichen in eine Zeichenfolge in C. Ich verwende derzeit c = fgetc(fp), das ein Zeichen zurückgibt. Aber ich brauche eine Zeichenfolge, um in strcpy verwendet zu werden

15
user1911575

Um die Frage zu beantworten, ohne zu viel zu lesen, würde ich das tun

char str[2] = "\0"; /* gives {\0, \0} */
str[0] = fgetc(fp);

Sie können die zweite Zeile in einer Schleife mit allen anderen Zeichenfolgenoperationen verwenden, die Sie als Zeichenketten verwenden möchten. 

8
Adam

Die Verwendung von fgetc(fp) nur, um strcpy(buffer,c); aufrufen zu können, scheint nicht richtig zu sein.

Sie können diesen Puffer einfach selbst erstellen:

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

Beachten Sie, dass dies darauf beruht, dass Sie weniger als MAX_SIZE_OF_MY_BUFFER-Zeichen lesen

5
LihO

Sie können viele der gegebenen Antworten ausführen, aber wenn Sie es nur mit strcpy verwenden möchten, können Sie Folgendes tun:

...
    strcpy( ... , (char[2]) { (char) c, '\0' } );
...

Der (char[2]) { (char) c, '\0' }-Teil generiert vorübergehend eine nullterminierte Zeichenfolge aus einem Zeichen c.

Auf diese Weise können Sie es vermeiden, neue Variablen für etwas zu erstellen, das Sie bereits in der Hand haben, vorausgesetzt, Sie benötigen diese Zeichenfolge Zeichenfolge - nur einmal.

3
ThoAppelsin

Ein solcher Code sollte funktionieren:

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

Ich benutze das, um char in string umzuwandeln (ein Beispiel):

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

Dies ist eine alte Frage, aber ich würde sagen, dass keine der Antworten wirklich zu der Frage des OP passt. Er wollte/musste nur Folgendes tun:

char c = std::fgetc(fp);
std::strcpy(buffer, &c);

Der relevante Aspekt hierbei ist die Tatsache, dass das zweite Argument von strcpy() muss kein char array/c-string sein. Tatsächlich ist keines der Argumente ein Zeichen oder ein Zeichenarray. Sie sind beide Zeichenzeiger:

strcpy(char* dest, const char* src);
dest : Ein Nicht-Konstanten-Zeichenzeiger
Sein Wert muss die Speicheradresse eines Elements eines beschreibbaren Zeichen-Arrays sein (mit mindestens einem weiteren Element danach).
src : Ein const char Zeiger
Sein Wert kann die Adresse eines einzelnen Zeichens oder eines Elements in einem Zeichen-Array sein. Dieses Array muss das Sonderzeichen enthalten \0 innerhalb seiner übrigen Elemente (beginnend mit src), um das Ende des zu kopierenden C-Strings zu markieren.

1
Floriel

Hier ist ein Arbeitsbeispiel:

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

Daraufhin wird -A- angezeigt.

0
Jean Sordes

Zu Ihrer Information haben Sie keinen String-Datentyp in C. Verwenden Sie ein Array von Zeichen, um den Wert zu speichern und ihn zu bearbeiten. Ändern Sie Ihre Variable c in ein Array von Zeichen und verwenden Sie sie innerhalb einer Schleife, um Werte zu erhalten. 

char c[10];
int i=0;
while(i!=10)
{
    c[i]=fgetc(fp);
    i++;
}

Die andere Möglichkeit ist, Zeiger zu verwenden, Speicher dynamisch zuzuordnen und Werte zuzuweisen.