【问题标题】:How to insert multiple elements into an array in c如何在c中将多个元素插入到数组中
【发布时间】:2016-04-10 16:56:55
【问题描述】:

该程序假设打印一个 16 x 16 的网格并在网格中随机水平插入多个元素,当我尝试在网格中插入单个元素时它工作正常,但当我尝试多个时,它会将符号插入网格中。我现在想知道为什么会发生这种情况。到目前为止,这是我的代码副本:

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

char **create2DArray(); 
#define WIDTH 16
#define HEIGHT 16
char** myArray; //global array

void main()
 {
   myArray = create2DArray();
 }

char **create2DArray(){
int i,j;
char **array = (char **) malloc(sizeof(char *) * WIDTH);

for(i=0; i<WIDTH; i++)
array[i] = (char *) malloc(sizeof(char) * HEIGHT);


void insertHorizontally(char* word, char** array);
srand(time(NULL));
int WIDTH_1 = (rand()%15)+ 1; 
int HEIGHT_1 = (rand()%15) + 1; 
int insert;

char* word[] = {"CAT","DOG",};

insert = strlen(word);

for(i=0; i<WIDTH; i++){
for(j=0; j<HEIGHT; j++){

array[i][j] = '.';
 }
}

for (j = HEIGHT_1; j < HEIGHT_1 + insert; j ++) {
 array[WIDTH_1][j] = word[j - HEIGHT_1];
}


void printArray(char** array);

for(i=0; i<WIDTH; i++){

for(j=0; j<HEIGHT; j++){

printf("%c ", array[i][j]);
}
printf("\n");
}

return array;
}

任何帮助、提示或建议将不胜感激:)

【问题讨论】:

  • 提示:使用int main 而不是void main。此外,正确缩进您的代码会增加您和其他人理解您的代码的机会。最后,记得编译时启用警告。

标签: c arrays elements


【解决方案1】:

希望对您有所帮助。它已在 Linux 中编译。您应该尝试阅读更易读的资源,以便在此处获得良好的帮助。

注意:如果 random 函数给出了行中列的最后一个索引,则可能是您的元素部分插入了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **create2DArray(); 
#define WIDTH 16
#define HEIGHT 16
char** myArray; //global array


char **create2DArray(){
    int i,j;
    char **array = (char **) malloc(sizeof(char *) * WIDTH);

    for(i=0; i<WIDTH; i++)
        array[i] = (char *) malloc(sizeof(char) * HEIGHT);
    return array;   
}

void insertHorizontally(char** word, int num, char** array)
{
    srand(time(NULL));
    int i, j, k;
    int WIDTH_1; 
    int HEIGHT_1; 
    int insert;

    for(i=0; i<WIDTH; i++){
        for(j=0; j<HEIGHT; j++){
            array[i][j] = '.';
        }
    }
    for(k = 0; k < num; k++){
        insert = strlen(word[k]);
        WIDTH_1 = (rand() % WIDTH); 
        HEIGHT_1 = (rand() % HEIGHT); 
        for (i= 0, j = HEIGHT_1; i < insert && j < HEIGHT  ; j ++, i ++)
            array[WIDTH_1][j] = word[k][j - HEIGHT_1];
    }
}

void printArray(char** array){
    int i, j;
    for(i=0; i<WIDTH; i++){
        for(j=0; j<HEIGHT; j++){
            printf("%c ", array[i][j]);
        }
        printf("\n");
    }
}

void main()
{
    myArray = create2DArray();
    char *word[] = {{"CAT"},{"DOG"},{"FOX"}};
    insertHorizontally(word, sizeof(word)/sizeof(char *), myArray);
    printArray(myArray);

}

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2023-04-06
    • 2023-03-26
    • 2020-02-21
    • 2017-11-06
    • 1970-01-01
    相关资源
    最近更新 更多