0

このステートメントが機能しない理由を理解しようとしています。

char resp[] = "123456789";
void getValue(char *im)
{
   im = resp;
   printf("\n%s\n",im);
}

int main(int argc, char *argv[])
{
    char imei[11] = {0};
    getValue(imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}

出力:

123456789
IMEI: 
4

3 に答える 3

3

で割り当てることはできません。代わりに次=を使用してください。strcpy

#include <stdio.h>
#include <string.h>

char resp[] = "123456789";
void getValue(char *im)
{
   im = strcpy(im, resp);
   printf("\n%s\n",im);
}

int main(int argc, char *argv[])
{
    char imei[11] = {0};
    getValue(imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}

これimeiは、配列 [11] (へのポインターだけではない) であるためです=

#include <stdio.h>

char resp[] = "123456789";
void getValue(char **im)
{
   *im = resp;
   printf("\n%s\n",*im);
}

int main(int argc, char *argv[])
{
    char *imei; /* Not an array but a pointer */
    getValue(&imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}
于 2013-08-24T06:14:29.037 に答える
2

C はパラメータを値で渡します。どんな変更を加えてもim、関数が終了すると失われます。変更を保存したい場合。ポインタのアドレスを渡します。次に、渡したアドレスのポインターを変更できます。

于 2013-08-24T06:13:59.120 に答える
1

これを試して:

char resp[] = "123456789";

void getValue(char **im)
{
   *im = resp;
   printf("\n%s\n",*im);
}

プログラム引数としてポインタへのポインタを渡す必要があります。

于 2013-08-24T06:10:56.210 に答える