我正在尝试打印矩形.如果我使用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)
这是程序的链接
%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)