在C中将Char转换为String

如何将字符转换为C中的字符串。我目前正在使用c = fgetc(fp)返回一个字符。 但是我需要在strcpy中使用一个字符串

为了回答这个问题,我没有读太多其他内容

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

您可以在循环中使用第二行,使用char作为字符串来保留其他任何字符串操作。

使用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字符的事实

您可以执行许多给定的答案,但如果您只是想将其与strcpy一起使用,那么您可以执行以下操作:

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

(char[2]) { (char) c, '\0' }部分将从字符c临时生成以null结尾的字符串。

通过这种方式,您可以避免为手中已有的东西创建新变量,前提是您只需要一次单字符串

像这样的代码应该工作:

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

我用它来将char转换为字符串(例子):

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

这是一个古老的问题,但我会说没有一个答案真的符合OP的问题。 他想要/需要做的就是:

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

这里的相关方面是, strcpy()的第二个参数不需要是char数组/ c-string。 实际上,根本没有参数是char或char数组。 它们都是char指针:

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

dest :非const char指针

它的值必须是可写char数组元素的内存地址(之后至少还有一个元素)。

src :一个const char指针

它的值可以是单个char的地址,也可以是char数组中的元素的地址。 该数组必须在其余元素(以src开头)中包含特殊字符\0 ,以标记应复制的c字符串的结尾。

仅供你在C中使用字符串数据类型。使用字符数组来存储值并对其进行操作。 将变量c更改为字符数组,并在循环内使用它来获取值。

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

另一种方法是使用指针并动态分配内存并分配值。

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

这是一个有效的例子:

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

这将显示-A-