私は C の初心者です。文字列を返す関数を作成しようとしています。C には文字列データ型がないことはわかっています。これらの代わりに、文字の配列を使用しようとしましたが、それは私の解決策ではありません。
char[] my_function(int x){
if(x>0)
return 'greaterThanZero';
else
return 'smallerOrEqualOfZero';
}
私を助けてください。
戻り値の型は次のようにする必要がconst char *
あり、文字列リテラルは二重引用符で囲む必要があります。
const char * my_function(int x)
{
if (x > 0)
return "greaterThanZero";
else
return "lessThanOrEqualToZero";
}
int main(void)
{
printf("my_function(1) = %s\n", my_function(1));
printf("my_function(0) = %s\n", my_function(0));
printf("my_function(-1) = %s\n", my_function(-1));
return 0;
}
char
変数には一重引用符が使用されていることに注意してください。
char c = 'X'; // single character - single quotes
char *s = "Hello world!"; // string - double quotes
void my_function(int x, char **ret){
if(x>0)
*ret= "greaterThanZero";
else
*ret= "smallerOrEqualOfZero";
}
そして主に
int main() {
char *string;
my_function(1, &string);
printf("%s",string);
}
別の方法:
void my_function(int x, char *T){
if(x>0)
strcpy(T,"greaterThanZero");
else
strcpy(T, "smallerOrEqualOfZero");
}
そして主に
int main() {
char string[100];
my_function(1, string);
printf("%s",string);
}
"
の代わりに使用'
('greaterThanZero'
する必要があります"greaterThanZero"
)
greaterThanZero と smallOrEqualOfZero を二重引用符で囲みます。
または、単一の文字 (g/s など) を返し、呼び出し元関数で条件を使用することもできます。
注: 「greaterThanZero」は通常、スタックではなく、const セクションに移動します。したがって、関数から安全に戻る必要があります。