Преобразование Char в строку в C

Как преобразовать символ в строку в C. В настоящее время я использую c = fgetc(fp), который возвращает символ. Но мне нужна строка, которая будет использоваться в strcpy

Ответы

Ответ 1

Чтобы ответить на вопрос, не прочитав слишком много другого, я бы

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

Вы можете использовать вторую строку в цикле с любыми другими строковыми операциями, которые вы хотите использовать char в качестве строк.

Ответ 2

Использование fgetc(fp) только для вызова strcpy(buffer,c); кажется неправильным.

Вы можете просто создать этот буфер самостоятельно:

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

Обратите внимание, что это зависит от того, что вы будете читать меньше MAX_SIZE_OF_MY_BUFFER символов

Ответ 3

Такой код должен работать:

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

Ответ 4

Вы можете выполнить многие ответы, но если вы просто хотите сделать это, чтобы использовать его с помощью strcpy, вы можете сделать следующее:

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

Часть (char[2]) { (char) c, '\0' } будет временно генерировать строку с нулевым завершением из символа c.

Таким образом, вы могли бы избежать создания новых переменных для того, что у вас уже есть в ваших руках, при условии, что вам понадобится только односимвольная строка только один раз.

Ответ 5

Я использую это для преобразования char в строку (пример):

char c = 'A';
char str1[2] = {c , '\0'};
char str2[5] = "";
strcpy(str2,str1);

Ответ 6

Это старый вопрос, но я бы сказал, что ни один из ответов не соответствует вопросу ОП. Все, что он хотел/должен был сделать, это следующее:

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

Соответствующий аспект здесь заключается в том, что второй аргумент strcpy() не должен быть char array/c-string. Фактически, ни один из аргументов не является массивом char или char. Они оба указатели char:

strcpy(char* dest, const char* src);

dest : Указатель non-const char Его значение должно быть адресом памяти элемента записываемого массива char (с последующим по меньшей мере еще одним элементом). src : Указатель const char Его значение может быть адресом одного char или элемента в массиве char. Этот массив должен содержать специальный символ \0 в пределах его оставшихся элементов (начиная с src), чтобы пометить конец c-строки, которая должна быть скопирована.дд > Дл >

Ответ 7

FYI, у вас нет строкового типа данных в C. Используйте массив символов для хранения значения и управления им. Измените переменную c в массив символов и используйте ее внутри цикла для получения значений.

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

Другой способ - использовать указатели и динамически распределять память и присваивать значения.

Ответ 8

//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