0

入力が改行かどうかを検出する必要があります。その後、に変換する必要があり'\0'ます。これが私のコードです:

void number()
{
    printf(LEV3"Student No. (20XXXXXXX):\t");
    int x=0, i=0;
    fgets(studno[i], LEN, stdin);
    if('\n'==studno[LEN-1])
        {
        [LEN-1]='\0';
        }
    x = atoi(studno[i]);
    if (((x/10000000)>=21||(x/10000000)<=19))
    {
        printf("ERROR: Invalid Student Number. Format should be 20XXXXXXX.\n");
        number();
    }

    i++;
}

どうすればいいですか?このコードでは常にコンパイラ エラーが発生します。

4

3 に答える 3

0

あなたが投稿したコードと以下のコードには多くの問題がありますが、それはあなたの質問に答えていると思います.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define LEV3 "\t\t\t"
#define LEN 30
char studno[LEN+1];

void number()
{
  printf(LEV3"Student No. (20XXXXXXX):\t");
  fgets(studno, LEN, stdin);

  int x = atoi(studno);
  if (((x/10000000)>=21||(x/10000000)<=19))
  {
    printf("ERROR: Invalid Student Number. Format should be 20XXXXXXX.\n");
    number();
  }

  int l = strlen(studno);
  if('\n'==studno[l-1])
  {
    studno[l-1]='\0';
  }
}

int main(int argc, char* argv[]) {
  number();
  printf("'%s'", studno);
  return 0;
}
于 2013-09-07T02:30:26.023 に答える