读书人

指针数组赋值有关问题各位大牛求帮组

发布时间: 2013-07-04 11:45:40 作者: rapoo

指针数组赋值问题,各位大牛求帮组
下面是我的程序:

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

int main()
{
char int_buf[3];
char *buf[5];
char *buf1 = int_buf;
int i,m = 0;
char* IntToStr(char* buf, int m);
m = 0;
while(1)
{
m = 0;
for(i=0;i<5;i++)
{
buf1 = IntToStr(buf1,i);
buf[m] = buf1;
m++;
}
buf[m] = '\0';
for(m = 0;m<5;m++)
{
printf("buf[%d] = %s\n",m,buf[m]);
}
printf("******************\n");
sleep(2);
}
return 0;
}

char* IntToStr(char* buf, int m)
{
char tmp[16];
int isNegtive = 0;
int index;

if(m < 0)
{
isNegtive = 1;
m = - m;
}

tmp[15] = '\0';
index = 14;
do
{
tmp[index--] = m % 10 + '0';
m /= 10;
} while (m > 0);

if(isNegtive)
tmp[index--] = '-';

strcpy(buf, tmp + index + 1);
return buf;
}

我想将buf赋值为*buf[5] = {"10","11","12","13","14"};
但是结果却是:[code=c][buf[0] = 14
buf[1] = 14
buf[2] = 14
buf[3] = 14
buf[4] = 14/code]
这是为什么呢?如果想要达到我的目的如何赋值呢?谢谢各位了 C 指针数组
[解决办法]
因为指针是指向buf1的,都是相同的。
而buf1的内容变了,所以其它的内容也都跟着变了。
解决办法是给buf的每个元素分配内存,然后把buf1的内容复制到里面去。

读书人网 >C语言

热点推荐