将字符数组转换为字符串使用C

12
我需要将字符数组转换为字符串。 类似这样:
char array[20];
char string[100];

array[0]='1';
array[1]='7';
array[2]='8';
array[3]='.';
array[4]='9';
...

我希望能得到类似这样的东西:

char string[0]= array // where it was stored 178.9 ....in position [0]

阅读 man atof,man strtod。 - Eddy_Em
2
你说的“将字符数组转换为字符串”是什么意思,因为字符数组本身就是一个字符串。 - Mike
2
@Mike 只有在对象中出现 '\0' 时才会发生。 - user166390
char string[100] 可能应该改为 char string[100][N]。 - Rocky Pulley
我知道'\0'是终止字符,但我需要将整个char数组的10个元素保存到字符串中。 - ARTAS
3个回答

34
你说你有这个东西:
char array[20]; char string[100];
array[0]='1'; 
array[1]='7'; 
array[2]='8'; 
array[3]='.'; 
array[4]='9';

您希望拥有这个:

string[0]= "178.9"; // where it was stored 178.9 ....in position [0]

你不能有那个。一个char只能保存一个字符,这就是它的限制。在C语言中,“字符串”是由一系列字符组成并以空字符(NULL终止符)结尾的数组。

如果你想要将array的前x个字符复制到string中,你可以使用memcpy()来实现:

memcpy(string, array, x);
string[x] = '\0'; 

很不幸,我没有15个声望来做这件事,所以我可以使用Data thumb :) - ARTAS

7
假设array是一个不以\0结尾的字符数组,您需要使用strncpy:
char * strncpy(char * destination, const char * source, size_t num);

像这样:

strncpy(string, array, 20);
string[20] = '\0'

然后string将成为一个以null结尾的C字符串,符合要求。

4

您可以使用strcpy函数,但请记得以'\0'结尾数组。

char array[20]; char string[100];

array[0]='1'; array[1]='7'; array[2]='8'; array[3]='.'; array[4]='9'; array[5]='\0';
strcpy(string, array);
printf("%s\n", string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接