1

これは、charポインタからcharに変換するためのものです。

別のトピックのコードに従いましたが、うまくいかないようです。これにはOpenVMSAnsiCコンパイラを使用しています。他のプラットフォームとの違いはわかりません。

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);

NUL ターミネータを含む、c内のすべての文字のためのスペースがあることを確認する必要があります。fieldこの場合はそうですが、一般的には 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 に答える
0

Cでは、char型は文字列ではなく単一の文字を保持します。 長さ100のをchar c[100];割り当てず、それぞれ1バイトの長さの100個の連続したsの配列を割り当て、その配列は文字列を保持できます。 charchar

したがって、あなたがやりたいと思われることは、charsの配列を、が指す位置にあるのと同じ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);
于 2011-10-17T03:44:32.837 に答える