-1

そのため、現在、文字列を受け取り、適切な句読点 (「.」、「?」、または「!」で終わる) をチェックするプログラムを 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 ですぐにわかりましたが、いくつかの研究は進むべき道ではありません)。

句読点なしで文を入力すると、これが機能しない理由が完全にわかりません。

これが本当に単純な場合は申し訳ありませんが、私はこれにかなり慣れていません。

前もって感謝します。

4

2 に答える 2