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

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