程序不会打印所需的字符

Mad*_*ddy -3 c

我正在尝试打印矩形.如果我使用print语句,它可以工作但不打印.如果有人可以在仪式方向指导我.谢谢您的帮助

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


char * drawRectangle(unsigned int height, unsigned int width){
    int row, col;
    char *myArray = malloc(100);

    int i = 0;

    while(myArray[i] != '\0'){
        for(row = 0; row<height; row++){
            printf("\n");
            for(col = 0; col < width; col++){
                if( row ==0 || row == height-1 || col == 0 || col == width-1){
                    //printf("*");
                    myArray[i++] = "*";
                }
                else{
                    //printf(" ");
                    myArray[i++] = " ";
                }
            }
        }
        i++;
    }
    return myArray;
}

int main() {
   char *c = drawRectangle(3,3);
   printf("%c", c);
   return (0);
}
Run Code Online (Sandbox Code Playgroud)

这是程序的链接

https://ideone.com/WxJuwx

Mik*_*CAT 6

  • 删除无用并调用未定义的行为循环.
  • 使用%s而不是%c打印字符串printf().
  • 不要忘记free()你分配的内容malloc().
  • 检查是否malloc()成功.
  • 分配字符,而不是指针myArray.
  • 终止通过添加空字符创建的字符串.

更正代码:

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

char * drawRectangle(unsigned int height, unsigned int width){
    unsigned int row, col;
    char *myArray = malloc(100); /* you should calculate the size of required buffer and use it here */

    int i = 0;

    if (myArray == NULL) return NULL;

    for(row = 0; row<height; row++){
        //printf("\n");
        myArray[i++] = '\n';
        for(col = 0; col < width; col++){
            if( row ==0 || row == height-1 || col == 0 || col == width-1){
                //printf("*");
                myArray[i++] = '*';
            }
            else{
                //printf(" ");
                myArray[i++] = ' ';
            }
        }
    }
    myArray[i] = '\0';
    return myArray;
}

int main(void) {
    char *c = drawRectangle(3,3);
    if (c != NULL) printf("%s", c);
    free(c);
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

  • 我建议在内循环之后移动`myArray [i ++] ='\n';`. (2认同)