2

私はこの課題を与えられ、これが私がこれまでに作成したコードです。このコードは、1 文字以上の処理を行う必要がある場合に 1 文字しか受け付けないため、単語を入力するとモールス符号になります。

#include "stdafx.h"
#include <ctype.h> 
#include <stdlib.h>
#include <string.h>

int _tmain(int argc, _TCHAR* argv[])
{
  char input[80], str1[100];

  fflush(stdin);
  printf("Enter a phrase to be translated:\n");
  scanf("%c", &input);
  int j = 0;
  for (int i = 0; i <= strlen(input); i++)
    {
      str1[j] = '\0';
      switch(toupper(input[i]))
        {
          ..................
        }
      j++;
    }
  printf("\nMorse is \n %s\n", str1);
  fflush(stdout);
  //printf("%s\n ",morse);
  free(morse);
}
4

3 に答える 3

6

あなたの scanf には%c、1文字だけを期待するものがあります。%sc-string を読み取るために使用します。

scanf("%s", input);

への引数scanf()はポインタ型です。c-string 名は最初の要素へのポインターであるため、address-of ( &) と言う必要はありません。

1 文字だけを読み取る場合は、 を使用する必要があります&

例えば:

scanf("%c", &input[i]); // pass the address of ith location of array input.
于 2012-11-13T13:30:04.837 に答える
2

%snotを使用して文字列を読み取ります%c。また、文字列はすでにポインタであるため、そのアドレスを取得する必要はありません。したがって、これを変換します。

scanf("%c", &input);

の中へ:

scanf("%s", input);
于 2012-11-13T13:30:45.587 に答える
2

scanf("%c", &input);単一の文字を読み取ります。おそらく探しているのはscanf("%s", input);

于 2012-11-13T13:31:10.147 に答える