そのため、現在、文字列を受け取り、適切な句読点 (「.」、「?」、または「!」で終わる) をチェックするプログラムを C でコーディングしようとしています。strchr 関数を使用して、文字列の最後の文字が for ループ内の if ループを使用して句読点の 1 つであるかどうかをテストして確認しようとしています。ただし、プログラムを実行すると、if ループがすべてスキップされるようです。
プログラムは次のとおりです。
#include<stdio.h>
#include<string.h>
int main(void)
{
char string[1000];
int i,length,a,p,q,e;
printf("Please enter a sentence with a valid punctuation.\n\n");
for(i=0;i<1000;i++)
{
fgets(string,2,stdin);
p=strchr(string,'.');
q=strchr(string,'?');
e=strchr(string,'!');
if(string[sizeof(string)-1]=='.'||'?'||'!')
{
printf("\nYay a sentence!");
break;
}
else if((p && q && e)==NULL)
{
printf("You didn't provide any punctuation. Goodbye.");
exit(a);
}
}
printf("You entered the sentence:\n %s",string);
return 0;
}
代わりに strstr を試したり、gets を介して別の方法で保存したりするなど、さまざまな方法で試しました (これは gcc ですぐにわかりましたが、いくつかの研究は進むべき道ではありません)。
句読点なしで文を入力すると、これが機能しない理由が完全にわかりません。
これが本当に単純な場合は申し訳ありませんが、私はこれにかなり慣れていません。
前もって感謝します。