現在c言語で、「入力した文字列が回文かどうかをmainとは別の関数で判断し、合っていたら『1』、違っていたら『0』を返して最後にmainで出力させるプログラムを作っています。

補足

個人的には、nはfor文から出たら強制的に0になってしまうため、returnで0を返して『違う』と出力されているのでは?と思っているのですが、本当にfor文を出たら0になるのか調べても見つからず分からないです。 . また、strcmp関数も検討したのですが、合っていたら『1』違う場合は『0』というのは問題から指定されており変えられないので、質問で書いた方法以外思いつかないです...。

C言語関連 | プログラミング41閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

1

1人がナイス!しています

その他の回答(1件)

0

#include <stdio.h> #include <string.h> int kaibun(char str[]){ int i, n, flag = 1; n = strlen(str); for(i = 0; i <= n/2; i++){ if(str[i] != str[n - i - 1]) { flag = 0; break; } } return flag; } int main(void) { char *str1 = "abcddcba", *str2 = "abcdabcd"; printf("[%s] は回文%s。\n", str1, kaibun(str1) ? "です" : "ではありません"); printf("[%s] は回文%s。\n", str2, kaibun(str2) ? "です" : "ではありません"); return 0; } ======== 【実行結果】 [abcddcba] は回文です。 [abcdabcd] は回文ではありません。

ご回答ありがとうございます。 flagを返している点について追加でお伺いしたいです。 . for文で繰り返すたびにnが増えていくと思うんですけど、nをmainに返すことはできないのでしょうか?