#include <stdio.h>
void read_string(char prompt[], char returned[], int MAX)
{
fputs(prompt, stdout);
fflush(stdin);
fgets(returned, MAX, stdin);
}
main()
{
char string[0][10];
read_string("String you want to return ", string[0], sizeof string[0]);
printf("The returned string is %s",string[0]);
fflush(stdin);
getchar();
}
このコードは、私が作成した (変更した) 演習からのもので、よく理解できないコード行を示しているだけです。ループ内でさまざまな文字列を返すと想定されているため、STRING [0] [100] を宣言しました。これは単なる例です。
さて、変数「文字列」がこの文字列 = 戻り値のような関数で取得されることを理解しています次に、キーボードから文字列を取得した後(fgets)、どのようにメイン()に戻りますか、つまり、実際に戻って暗黙的にこれを行うのですか? 返された = 文字列
また、コンパイラはコンパイル時にこのメッセージを表示します(ただし、実行時に実際には文字列が返されます)
[警告] 文字列定数から 'char*' への非推奨の変換 [-Wwrite-strings]
私は関数とその構造を学ぶのが初めてで、まだポインターを見たことはありませんが、これまで読んだことから、文字列を返すにはポインターが必要です。この問題を解決するためのガイダンスに非常に感謝しています。
ここでの主な質問は、 return を使用する必要なく、文字列がどのように返されるかということです。つまり、文字列は「returned」という変数に保存されますが、どのようにしてそこから抜け出し、メインに戻るのでしょうか。