C言語
AI作成コードで試行
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void init_buffer(char *buf, size_t size)
{
size_t i;
for (i = 0; i < size; i++) {
buf[i] = '\0';
}
}
int add_value(int a, int b)
{
return a + b;
}
int sub_value(int a, int b)
{
return a - b;
}
void print_message(const char *msg)
{
if (msg == NULL) {
printf("message is null\n");
return;
}
printf("%s\n", msg);
}
int calc_average(int *values, int count)
{
int i;
int sum = 0;
if (values == NULL || count <= 0) {
return 0;
}
for (i = 0; i < count; i++) {
sum += values[i];
}
return sum / count;
}
int main(int argc, char *argv[])
{
char buffer[64];
int nums[5] = { 10, 20, 30, 40, 50 };
int avg;
int result;
init_buffer(buffer, sizeof(buffer));
strcpy(buffer, "C sample with header comments");
print_message(buffer);
result = add_value(10, 5);
printf("add result = %d\n", result);
result = sub_value(10, 5);
printf("sub result = %d\n", result);
avg = calc_average(nums, 5);
printf("average = %d\n", avg);
return 0;
}
関数番号 1:init_buffer【バッファを初期化する】
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
1(["14行目
関数 init_buffer の開始:
void init_buffer(char *buf, size_t size) 'L14"])
3[/"17行目
カウンタループ:
for (i = 0; i < size; i++) 'L19"\]:::clrPattern2
4["18行目
buf[i] に '&yen;0' を代入する:
buf[i] = '&yen;0'; 'L21"]
5(["19行目
繰返文終了_1 'L22"]):::clrPattern7
6(["20行目
関数終了_1 'L23"])
%%ルート設定
1-->3
3-->|繰返し文継続へ|4
3-->|繰返文終了後の処理へ|6
4-->5
5-->|繰返し文開始へ|3
関数番号 2:add_value【2つの数値を加算して結果を返す】
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
7(["26行目
関数 add_value の開始:
int add_value(int a, int b) 'L29"])
8["28行目
計算結果または関数呼出結果を返して関数を終了する:
return a + b; 'L33"]
9(["29行目
関数終了_2 'L34"])
%%ルート設定
7-->8
8-->9
関数番号 3:sub_value【2つの数値を減算して結果を返す】
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
10(["35行目
関数 sub_value の開始:
int sub_value(int a, int b) 'L40"])
11["37行目
計算結果または関数呼出結果を返して関数を終了する:
return a - b; 'L44"]
12(["38行目
関数終了_3 'L45"])
%%ルート設定
10-->11
11-->12
関数番号 4:print_message【指定されたメッセージを標準出力に表示する】
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
13(["44行目
関数 print_message の開始:
void print_message(const char *msg) 'L51"])
14{"46行目
条件文:if (msg 等しいか NU
LL) 'L54"}:::clrPattern1
16(["46行目
(解析用)満たす場合 'L56"]):::clrPattern7
17[/"47行目
標準出力に文字列を出力する:
printf(“message is null&yen;n“); 'L57"/]:::clrPattern6
18["48行目
処理を終了する:
return; 'L58"]
19(["行目
(補完行)そうでない場合 'L59"]):::clrPattern7
20(["49行目
条件文終了_1 'L60"]):::clrPattern7
21[/"50行目
標準出力に文字列を出力する:
printf(“%s&yen;n“, msg); 'L61"/]:::clrPattern6
22(["51行目
関数終了_4 'L62"])
%%ルート設定
13-->14
14-->|真の場合|16
14-->|偽の場合|19
16-->17
17-->18
18-->20
19-->20
20-->21
21-->22
関数番号 5:calc_average【配列の平均値を計算する】
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
23(["57行目
関数 calc_average の開始:
int calc_average(int *values, int count) 'L68"])
25["60行目
int型の sum を定義して 初期値 0 を設定する:
int sum = 0; 'L73"]
26{"62行目
条件文:if (values 等しいか
NULL または count 以下か 0) &#
39;L75"}:::clrPattern1
28(["62行目
(解析用)満たす場合 'L77"]):::clrPattern7
29["63行目
定数値を返して関数を終了する:
return 0; 'L78"]
30(["行目
(補完行)そうでない場合 'L79"]):::clrPattern7
31(["64行目
条件文終了_2 'L80"]):::clrPattern7
32[/"66行目
カウンタループ:
for (i = 0; i < count; i++) 'L82"\]:::clrPattern2
33["67行目
sum + に values[i] を代入する:
sum 加算して代入 values[i]; 'L84"]
34(["68行目
繰返文終了_2 'L85"]):::clrPattern7
35["69行目
計算結果または関数呼出結果を返して関数を終了する:
return sum / count; 'L86"]
36(["70行目
関数終了_5 'L87"])
%%ルート設定
23-->25
25-->26
26-->|真の場合|28
26-->|偽の場合|30
28-->29
29-->31
30-->31
31-->32
32-->|繰返し文継続へ|33
32-->|繰返文終了後の処理へ|35
33-->34
34-->|繰返し文開始へ|32
35-->36
関数番号 6:main
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize':'14px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis','wrap': true,'markdownAutoWrap': true,'wrappingWidth': 500 } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFD700,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern6 fill:#ADFF2F,stroke:#333,stroke-width:2px;
classDef clrPattern7 fill:#D3D3D3,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ設定
37(["76行目
関数 main の開始:
int main(int argc, char *argv[]) 'L93"])
39["79行目
int型の nums[5] を定義して 初期値 を設定する:
int nums[5] = 'L98"]
42[["83行目
関数 init_buffer を呼び出す:
init_buffer(buffer, sizeof(buffer));:
ユーザー定義関数呼出含む 'L106"]]:::clrPattern3
43["84行目
文字列をコピーする(危険版):
strcpy(buffer, “C sample with header comments“); 'L107"]
44[["86行目
関数 print_message を呼び出す:
print_message(buffer);:
ユーザー定義関数呼出含む 'L109"]]:::clrPattern3
45["88行目
result に add_value(10, 5) を代入する:
result = add_value(10, 5);:
ユーザー定義関数呼出含む 'L111"]
46[/"89行目
標準出力に文字列を出力する:
printf(“add result = %d&yen;n“, result); 'L112"/]:::clrPattern6
47["91行目
result に sub_value(10, 5) を代入する:
result = sub_value(10, 5);:
ユーザー定義関数呼出含む 'L114"]
48[/"92行目
標準出力に文字列を出力する:
printf(“sub result = %d&yen;n“, result); 'L115"/]:::clrPattern6
49["94行目
avg に calc_average(nums, 5) を代入する:
avg = calc_average(nums, 5);:
ユーザー定義関数呼出含む 'L117"]
50[/"95行目
標準出力に文字列を出力する:
printf(“average = %d&yen;n“, avg); 'L118"/]:::clrPattern6
51["97行目
定数値を返して関数を終了する:
return 0; 'L120"]
52(["98行目
関数終了_6 'L121"])
%%ルート設定
37-->39
39-->42
42-->43
43-->44
44-->45
45-->46
46-->47
47-->48
48-->49
49-->50
50-->51
51-->52