1

这是将 char 指针转换为 char。

我遵循了另一个主题的代码,但它似乎对我不起作用。我为此使用 Open VMS Ansi C 编译器。我不知道与另一个平台有什么区别。

main(){

char * field = "value1";
char c[100] = (char )field;

printf("c value is %s",&c);

}

这个的输出是

c value is

这对我来说是出乎意料的

c value is value1

希望您能够帮助我。

4

3 回答 3

4
strcpy(c, field);

您必须确保c为 中的所有字符留有空间field,包括 NUL 终止符。在这种情况下确实如此,但一般来说,您将需要一个 if 检查。

编辑:在 C 中,您不能从函数返回数组。如果您需要分配存储空间,但不知道长度,请使用malloc. 例如:

size_t size = strlen(field) + 1; //  If you don't know the source size.
char *c = malloc(size);

然后,使用与strcpy以前相同的调用。

于 2011-10-17T02:58:38.903 回答
1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

    char * field = "value";

    char c[100]="";
    strncpy(c,field,100);

    printf("c value is %s",c);
    return 0;
}
于 2021-06-18T04:39:03.540 回答
0

在 C 中,char类型包含单个字符,而不是字符串。 char c[100];不分配char长度为 100 的 a,它分配了一个包含100 个连续s 的数组char,每个数组长一个字节,并且该数组可以保存一个字符串。

因此,您似乎想要做的是用与a 指向的位置char相同的值填充 s数组。为此,您可以使用或其他几个功能:charchar *strncpy()

strncpy(c,field,100); /* copy up to 100 chars from field to c */
c[99] = '\0';         /* ..and make sure the last char in c is '\0' */

..或使用strcpy(),因为您知道字符串将适合c(在这种情况下更好):

strcpy(c,field);

..或者:

snprintf(c,100,"%s",field);
于 2011-10-17T03:44:32.837 回答