标题:自学小白在做习题时遇到不明白的问题,求大神解释下
取消只看楼主
l23wf1
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-1-15
结帖率:100%
已结贴  问题点数:20 回复次数:3 
自学小白在做习题时遇到不明白的问题,求大神解释下
不明白p[i]的值为什么一跳出循环就全部变成p[99]的值
程序代码:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

int main(int argc , char *argv[])
{
    int buf[100];
    char dst[5];
    char *p[100];

    srand(time(NULL));

    int i = 0;
    int n = sizeof(buf)/sizeof(buf[0]);

    //打开文件
        FILE *fp = NULL;
        fp = fopen("aa.txt","w");
        if(fp == NULL)
        {
            perror("fopen");
            return 0;
        }

    for(i = 0;i < n;i++)
    {
        buf[i] = (rand()%100)+1;
        sprintf(dst,"%d\n",buf[i]);
        p[i] = dst;
        printf("p[%d] = %s",i,p[i]);
    }

    printf("p[98] = %s",p[98]);



//写入内容
i = 0;
    while(i < 100)
    {
        fputs(p[i],fp);
        i++;
    }

//关闭文件
    fclose(fp);
    fp = NULL;


    return 0;
}


[此贴子已经被作者于2018-1-15 21:34编辑过]

搜索更多相关主题的帖子: 习题 include int char NULL 
2018-01-15 21:26
l23wf1
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-1-15
得分:0 
回复 2楼 吹水佬
问下为什么dst不会根据循环时buf的变化而变化,我原本是理解为用循环将buf获取的随机值通过sprintf格式化到dst中,然后在循环中用dst赋值给p[i]
2018-01-15 22:30
l23wf1
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-1-15
得分:0 
回复 2楼 吹水佬
是因为*p[100]存放的都是dst的地址所以p[i]跳出循环后所有的值都是dst最后的值的原因吗?好像有点明白了
2018-01-15 22:50
l23wf1
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-1-15
得分:0 
回复 6楼 吹水佬
明白了。谢谢!
2018-01-16 15:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484263-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.063802 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved