首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-07-04 
指针数组赋值问题,各位大牛求帮组下面是我的程序:#include stdio.h#include string.h#include unistd

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

#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的内容复制到里面去。

热点排行