我如何在C语言中将字符转换为字符串。目前我使用的是c = fgetc(fp)
,它返回一个字符。但是我需要一个字符串来用于strcpy。
为了回答这个问题,我会尽量不引入太多其他的内容。
char str[2] = "\0"; /* gives {\0, \0} */
str[0] = fgetc(fp);
你可以在循环中使用第二行,与其他字符串操作一起使用 chars 作为字符串。
有很多种方法可以实现,但如果你只是想使用strcpy
来进行操作,那么你可以按照以下方式进行:
...
strcpy( ... , (char[2]) { (char) c, '\0' } );
...
(char[2]) { (char) c, '\0' }
部分将从字符c临时生成一个以空字符结尾的字符串。
这样,您就可以避免为已经掌握的内容创建新变量,只要您只需要这个单字符字符串一次即可。
仅使用 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
。:
char c = 'A';
char str1[2] = {c , '\0'};
char str2[5] = "";
strcpy(str2,str1);
这里是一个工作示例:
printf("-%s-", (char[2]){'A', 0});
-A-
。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';
'\0'
而不是 0
,因为 '\0'
明确表达了“我在这里分配终止字符”的含义。 - LihO//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
char c = std::fgetc(fp);
std::strcpy(buffer, &c);
strcpy()
的第二个参数不必是 char 数组或 c 字符串。实际上,两个参数都不是 char 或 char 数组。它们都是 char 指针:strcpy(char* dest, const char* src);
dest :
非const字符指针src :
const字符指针\0
,以标记应复制的c字符串的结尾,该字符在其余元素(从src
开始)中出现。提醒一下,C语言中没有字符串数据类型。请使用字符数组来存储值并进行操作。将您的变量c改为字符数组,并在循环内部使用它来获取值。
char c[10];
int i=0;
while(i!=10)
{
c[i]=fgetc(fp);
i++;
}
\0
作为数组的最后一个元素存储即可。 - haccksfscanf(pf, "%s", &buf)
的方法。 - gongzhitaaostrcpy()
一起使用它? - Heeryu