Как конвертировать указатель в символ в C Open VMS - PullRequest
1 голос
/ 17 октября 2011

Конвертировать из указателя в символ.

Я следовал кодам из другой темы, но мне кажется, это не работает. Я использую 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

надеюсь, вы сможете мне помочь.

Ответы [ 2 ]

4 голосов
/ 17 октября 2011
strcpy(c, field);

Вы должны быть уверены, что c имеет место для всех символов в field, включая NUL-терминатор. В этом случае это так, но в общем случае вам понадобится проверка if.

EDIT: в C вы не можете вернуть массив из функции. Если вам нужно выделить память, но вы не знаете длину, используйте malloc. E.g.:

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

Затем используйте тот же strcpy вызов, что и раньше.

0 голосов
/ 17 октября 2011

В C тип char содержит один символ, а не строку.char c[100]; не выделяет char длины 100, он выделяет массив из 100 последовательных char с, каждый длиной в один байт, и этот массив может содержатьстрока.

Итак, вы хотите заполнить массив char s теми же значениями char, которые находятся в месте, указанном char *.Для этого вы можете использовать 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);
...