C で記述している大規模な割り当てのための単純な関数を記述しようとしています。関数の目的は、文字列に小文字または大文字のみが含まれているかどうかを判断し、文字列のサイズ (\0 のインデックス) を返すことです。テストに合格した場合は-1、そうでない場合は-1。これは私が書いたものです:
#include <stdio.h>
int only_letters(char string[], int index);
void main() {
char string1[]="Hi my name is pete";
char string2[]="thisissupposedtobevalid";
printf("the first string is %d and the second one is %d\n",only_letters(string1,0),only_letters(string2,0));
}
int only_letters(char string[], int index){
if(!string[index]) return index;
if(string[index]<'a'||string[index]>'Z') return -1;
only_letters(string, index+1);
}
これを実行すると、最初の文字列 (無効であると想定される) と、有効であると想定される 2 番目の文字列の両方で -1 が取得されます。
(ループの使用は許可されておらず、他にも多数の制限があるため、より簡単な解決策や単純な解決策を提供しないでください。それらが存在することは知っていますが、私が書いたものが機能しない理由を理解しようとしています。)