c语言字符串数组循环,c语言新手请问一个循环给字符串指针数组赋值的有关问题...

c语言新手请教一个循环给字符串指针数组赋值的问题

char* STR_CHOICE_D[50];

U8 str[70];

for(i.....){

//此处改变str的值

STR_CHOICE_D[i]=str;

}

MessageBox( STR_CHOICE_D[0],"提示",MB_OK); //期望应该等于  A  实际输出 C

MessageBox( STR_CHOICE_D[1],"提示",MB_OK); //期望应该等于  B  实际输出 C

MessageBox( STR_CHOICE_D[2],"提示",MB_OK); //期望应该等于  C  实际输出 C

//也就是所有数组都保存着最后一个字符串,我猜是因为str赋值给STR_CHOICE_D[i]的时候赋的是地址,所有下标都指向的同一个地址

怎么解决这个问题?

------解决方案--------------------

改为如下的试试:

//char* STR_CHOICE_D[50];

char STR_CHOICE_D[50][70];

U8 str[70];

for(i.....){

//此处改变str的值

//STR_CHOICE_D[i]=str;

memcpy(&STR_CHOICE_D[i][0], &str[0], 70);

}

引用:char* STR_CHOICE_D[50];

U8 str[70];

for(i.....){

//此处改变str的值

STR_CHOICE_D[i]=str;

}

MessageBox( STR_CHOICE_D[0],"提示",MB_OK); //期望应该等于  A  实际输出 C

MessageBox( STR_CHOICE_D[1],"提示",MB_OK); //期望应该等于  B  实际输出 C

MessageBox( STR_CHOICE_D[2],"提示",MB_OK); //期望应该等于  C  实际输出 C

//也就是所有数组都保存着最后一个字符串,我猜是因为str赋值给STR_CHOICE_D[i]的时候赋的是地址,所有下标都指向的同一个地址

怎么解决这个问题?

------解决方案--------------------

U8 str[70];这个是什么?

------解决方案--------------------

char* STR_CHOICE_D[50];

char str[70];

char *p;

int n;

p=str;

for(int i=0;i<3;i++) {

n=sprintf(p,"%c",'A'+i);

p+=n+1;

STR_CHOICE_D[i]=p;

}

MessageBox( STR_CHOICE_D[0],"提示",MB_OK); // A

MessageBox( STR_CHOICE_D[1],"提示",MB_OK); // B

MessageBox( STR_CHOICE_D[2],"提示",MB_OK); // C

------解决方案--------------------

纠正上帖:

char* STR_CHOICE_D[50];

char str[70];

char *p;

int n;

p=str;

for(int i=0;i<3;i++) {

n=sprintf(p,"%c",'A'+i);

STR_CHOICE_D[i]=p;

p+=n+1;

}

MessageBox( STR_CHOICE_D[0],"提示",MB_OK); // A

MessageBox( STR_CHOICE_D[1],"提示",MB_OK); // B

MessageBox( STR_CHOICE_D[2],"提示",MB_OK); // C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值