1

重複の可能性:
関数から文字列を返す際の問題
ローカル変数のメモリにそのスコープ外でアクセスできますか?

関数を使用して文字列ポインタの値を変更しようとしています。someStructという構造体を宣言しましたが、フィールドの1つは、「valu」という名前の文字列へのポインタです。これが私がしたことです:

void func(char* nvalue,someStruct* container){
    char temp[strlen(nvalue+1);
    temp=strcpy(temp,nvalue);
    container->valu=temp;
    return;

この関数は、コンテナーの値をnvalueに変更しますか?そうでない場合、どうすればそれを行うことができますか?私は本当にCが苦手なので、どんな助けでもいいでしょう!ありがとうございました

4

1 に答える 1

1

はローカル変数であるため、関数の外部へのtmpアクセスは未定義の動作です。container->valueただし、動的割り当てを使用して変数の有効期間を制御することは可能です。

#include <stdlib.h>
#include <string.h>

char **p = &container->value;

*p = malloc(strlen(nvalue) + 1);

if (*p != NULL)
{
  strcpy(*p, nvalue);
}
于 2013-01-27T11:39:17.913 に答える