回答編集履歴

2

追記

2021/08/16 03:24

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -49,3 +49,67 @@
49
49
  }
50
50
 
51
51
  ```
52
+
53
+ **追記**
54
+
55
+ sprintf にこだわらなければ簡単です。
56
+
57
+
58
+
59
+ 1文字ずつ出力すると、
60
+
61
+ ```C
62
+
63
+ #include <stdio.h> // putchar
64
+
65
+
66
+
67
+ void draw(int x, int y)
68
+
69
+ {
70
+
71
+ for (int i = 0; i < x; i++) {
72
+
73
+ for (int j = 0; j < y; j++) putchar('*');
74
+
75
+ putchar('\n');
76
+
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+ int main(void) { draw(3, 10); }
84
+
85
+ ```
86
+
87
+ 行単位で出力すると、
88
+
89
+ ```C
90
+
91
+ #include <stdio.h> // puts
92
+
93
+ #include <string.h> // memset
94
+
95
+
96
+
97
+ void draw(int x, int y)
98
+
99
+ {
100
+
101
+ char text[256]; // 可変長配列が使えるバージョンの C なら、char text[y+1];
102
+
103
+ memset(text, '*', y); // for (int i = 0; i < y; i++) text[i] = '*';
104
+
105
+ text[y] = '\0';
106
+
107
+ while (--x >= 0) puts(text); // printf("%s\n", text)
108
+
109
+ }
110
+
111
+
112
+
113
+ int main(void) { draw(3, 10); }
114
+
115
+ ```

1

書式の改善

2021/08/16 03:24

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  for (x = 0; x < 1; x++) {
30
30
 
31
- for ( y = 0; y < 10; y++) {
31
+ for (y = 0; y < 10; y++) {
32
32
 
33
33
  sprintf(text1 + y, "%c", str1); // ★ '*' を入れる場所を変更
34
34
 
@@ -36,11 +36,11 @@
36
36
 
37
37
  sprintf(text2, "%s", str2);
38
38
 
39
- sprintf(text3, "%s%s", text1, text2); // ★ text1 は文字列だから "%s"
39
+ sprintf(text3, "%s%s", text1, text2); // ★ text1 は文字列だから "%s"
40
40
 
41
41
  printf(text3);
42
42
 
43
- } // ★ for の範囲を変更。x < 3 にすると 3x10 の '*' になる
43
+ } // ★ for の範囲を変更。x < 3 にすると 3x10 の '*' になる
44
44
 
45
45
 
46
46