Преобразование 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