gpt4 book ai didi

创建随机生成的字符矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:21 25 4
gpt4 key购买 nike

我正在尝试创建一个由随机生成的字符组成的随机生成矩阵;我无法理解我的代码中出现的错误,如果有人可以突出显示它们....可能有很多,因为这是我第一次使用这种代码。

我的意思是,它可以编译,但会打印一系列“-”,但创建的字符应该是字母。

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

#define MAX_SIZE_STRING 20

int main() {



int number_arr_rows= 5;
int i , j;
int min_size_string= 4;
float probability;
int *arr_string_lenght = (int*)malloc(number_arr_rows*sizeof(int));
for(i = 0 ; i < number_arr_rows ; i++){
arr_string_lenght[i]= min_size_string + rand() % ( MAX_SIZE_STRING - min_size_string + 1);
}


char **created_string_arr = (char**)malloc(number_arr_rows * sizeof(*created_string_arr));
for( i = 0 ; i < number_arr_rows ; i++){
created_string_arr[i] = (char*)malloc(arr_string_lenght[i]*sizeof(created_string_arr));
}


// generating characters [A-Z][a-z] randomly. 50% probability.
for(i= 0 ; i < number_arr_rows ; i++){
for(j = 0 ; j < arr_string_lenght[j] ; j++){
probability = (float)((rand() % 101) / 100);
if(probability <= 0.5){
created_string_arr[i][j]= (char)(65 + rand() %26);
}

else{
created_string_arr[i][j] = (char)(97 +rand() %26);

}
}
}

for(i = 0 ; i < number_arr_rows ; i++){
for( j = 0 ; j < arr_string_lenght[i] ; j++){
printf("%s\n" , created_string_arr[i]);
}
}
return 0;
}

最佳答案

第一个明显的问题是在这些行中:

for(i= 0 ; i < number_arr_rows ; i++){
for(j = 0 ; j < arr_string_lenght[j] ; j++){

您正在使用 j 索引到 j 循环内的 arr_string_lenght...应该是 i

其次,你没有 NUL 终止你的字符串,所以你不能这样做:

printf("%s\n" , created_string_arr[i]);

而且您不需要这样做,因为您无论如何都要遍历每个元素,而且这也解决了您没有分配足够的内存来存储 NUL 的问题。你可以像这样打印出每个字符:

for(i = 0 ; i < number_arr_rows ; i++) {
for( j = 0 ; j < arr_string_lenght[i] ; j++) {
printf("%c" , created_string_arr[i][j]);
}
printf("\n");
}

此外,您没有释放您分配的内存。即使在像这样的简单程序中也这样做,以牢固地嵌入大型项目的习惯是一种很好的做法。

关于创建随机生成的字符矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53655254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com