【C言語】char型の関数で文字列を返したい
Q&A
Closed
次のCプログラムについて質問です。
#include <stdio.h>
#include <string.h>
char *str_connect(int m){
char buf_len[20];
char str_current[1000]="ABC,";
char str[100];
for(int i=1;i<=m-1;i++){
fgets(buf_len,sizeof(buf_len),stdin);
sscanf(buf_len,"%s",str);
strcat(str_current,str);
strcat(str_current,",");
}
fgets(buf_len,sizeof(buf_len),stdin);
sscanf(buf_len,"%s",str);
strcat(str_current,str);
strcat(str_current," etc...");
return str_current;
}
int main(){
int n;
char buf[20];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&n);
printf("%s",str_connect(n));
}
こちらが期待していたのは、標準入力で
4
DEF
GHI
JKL
MNO
のように入力すると
ABC,DEF,GHI,JKL,MNO etc...
と出力されるプログラムで、上のプログラムでは確かに期待通りに実行されています。しかし、実行環境によっては、実行時にstr_connect関数のreturn文の箇所に⚠️がついている(出力結果は正しい)ので、気になっています。
この問題の原因を特定出来ず、困っています。文字列の返し方が間違っているのでしょうか?