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
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.
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
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.
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';
Ich benutze das, um char in string umzuwandeln (ein Beispiel):
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
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-Zeichenzeigersrc :
Ein const char Zeiger\0
innerhalb seiner übrigen Elemente (beginnend mit src
), um das Ende des zu kopierenden C-Strings zu markieren.Hier ist ein Arbeitsbeispiel:
printf("-%s-", (char[2]){'A', 0});
Daraufhin wird -A-
angezeigt.
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.