2

我被分配了这个任务,这是我到目前为止所做的代码。该代码只接受一个字母,当它应该比字母做更多时,所以我可以输入一个单词,它会是摩尔斯电码

#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只需要一个字符。用于%s读取 c 字符串:

scanf("%s", input);

参数为scanf()指针类型。由于 c 字符串名称是指向第一个元素的指针,因此无需说 address-of ( &)。

如果您只阅读一个字符,则需要使用&.

例如:

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

scanf("%c", &input);将读取一个字符,您可能正在寻找scanf("%s", input);

于 2012-11-13T13:31:10.147 回答
2

%s使用not读取字符串%c。同样一个字符串已经是一个指针,不需要获取它的地址。所以转换这个:

scanf("%c", &input);

进入:

scanf("%s", input);
于 2012-11-13T13:30:45.587 回答