Как конвертировать указатель в символ в C Open VMS
Это преобразовать указатель в символ.
Я следовал за кодами из другой темы, но мне кажется, что это не работает. Я использую 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
надеюсь, ты сможешь мне помочь.
3 ответа
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
звоните как раньше.
#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;
}
В С char
Тип содержит один символ, а не строку. char c[100];
не выделяет char
длиной 100, он выделяет массив из 100 последовательных char
s, каждый байт длиной, и этот массив может содержать строку.
Так что вы, похоже, хотите сделать, это заполнить массив char
с тем же 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);