私はintを返すC関数を作成しようとしていますが、プロセス内で変数として渡されたchar *が代入されます。私がしようとしています何の基本的な例は次のとおりです。main.cのでCでは、関数に渡されたchar *にはどのようにテキストが設定されますか?
int myMethod(int input, char* output, int outMaxLen) {
int outValue = input * 5;
if (out < 10) strcat(output, "A small number");
else if (out < 20) strcat(output, "A medium number");
else strcat(output, "A large number");
}
:
実行char* myMethodOutput;
int myMethodInt = myMethod(2, myMethodOutput, 15);
printf("%d %s", myMethodInt, myMethodOutput);
、画面上の整数表示されますが、テキストにはありません。
変数outMaxLenは、char *パラメータが出力文字列を格納するのに十分な大きさであることを確認するためのものです。
strcat()と同様に、私はstrcpy()とstrncpy()を試してみました。 strcat()はコンソールにテキストを表示せず、strcpy()とstrncpy()はメッセージEXC_BAD_ACCESSでデバッガを起動します。
私はこれをWindows APIでstrcpy_s関数を使ってうまく管理しましたが、今はUNIXボックスで試しています。私はおそらく何か非常に基本的なものを逃している!
このコードでは、名前を修正する必要があります。外に何がありますか?あなたはoutMaxLenを意味しますか? –
あなたは何も返されないようです。 –
セグメンテーションフォールトは発生しませんか? –