c 语言随机字符串函数出现段错误

开源中国董事会主席 发布于 2012/07/12 21:42
阅读 330
收藏 0
char *string_random(uint length, uint type, uint *result_length){
    char *dict;
    uint dict_length;
    char *result;
    uint i = 0;
    int c;
    php_printf("aa\r\n");
    switch(type){
        case 0:
            dict = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            break;
        case 1:
            dict = "0123456789";
            break;
        case 2:
            dict = "abcdefghijklmnopqrstuvwxyz";
            break;
        case 3:
            dict = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            break;
        case 4:
            dict = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            break;
        default:
            *result_length = 0;
            return "";
            break;
    }
    php_printf("bb\r\n");
    dict_length = strlen(dict);
    php_printf("cc\r\n");
    srand(time(NULL));
    php_printf("dd\r\n");
    for(; i < length; i++){
        c = rand()%(dict_length + 1);
        if(c > dict_length - 1){
            c = dict_length - 1;
        }
        result[i] = dict[c];
    }
    php_printf("ee\r\n");
    result[length] = '\0';
    *result_length = length;
    php_printf("ff\r\n");
    return result;

}

@中山野鬼 请假个问题,我这个函数是想生成可指定长度、指定类型的随机字符串,但执行到上面红色背景那个地方之后就会出现段错误,实在看不出哪里有问题了,求教求教 “php_printf” 功能就是打印字符串

加载中
0
OrionBox
OrionBox
我觉得是随机种子里获取的时间类型不对,srand((unsigned)time(null));
OrionBox
OrionBox
回复 @腾勇 : 嘿嘿。。我一直以为类型不一样呢。。
开源中国董事会主席
开源中国董事会主席
time()的返回值 本身就是 unsigned
开源中国董事会主席
开源中国董事会主席
这里是对的 我找到问题了 没有给char *result 分配内存
0
中山野鬼
中山野鬼
FT!!!!来晚了。
中山野鬼
中山野鬼
回复 @腾勇 : VC 你release试试。。
开源中国董事会主席
开源中国董事会主席
吼吼 问题已经解决,nnd vc 编译 result 不需要给分配内存就ok,gcc 缺不行
返回顶部
顶部