C语言中使用字符串数组的莫尔斯码转换器

C语言中使用字符串数组的莫尔斯码转换器,c,arrays,string,pointers,converter,C,Arrays,String,Pointers,Converter,C语言中的这个例子将英文文本中的一个字符转换成摩尔斯电码。我们的任务是读取长度不等的未知数量的字符串,并将整个字符串转换为莫尔斯。我知道数组中的每个条目都是指向字符串第一个字符的指针 根据我们开发的基本代码,我不确定如何继续,通过用户输入读取一个字符是完全不同的 我的另一个想法是,如果数组中的每个条目都是指向该字符串第一个字符的指针,例如: a[0] = "happy" 我怎么可能只访问一个字符,因为这样我就可以一次运行一个字符的代码,但是因为从input.txt文件中读取的字符串数量未知,长

C语言中的这个例子将英文文本中的一个字符转换成摩尔斯电码。我们的任务是读取长度不等的未知数量的字符串,并将整个字符串转换为莫尔斯。我知道数组中的每个条目都是指向字符串第一个字符的指针

根据我们开发的基本代码,我不确定如何继续,通过用户输入读取一个字符是完全不同的

我的另一个想法是,如果数组中的每个条目都是指向该字符串第一个字符的指针,例如:

a[0] = "happy"
我怎么可能只访问一个字符,因为这样我就可以一次运行一个字符的代码,但是因为从
input.txt
文件中读取的字符串数量未知,长度未知,我感到非常不知所措

下面是通过用户输入完成一个字符的开发代码。我完全理解

#include <stdio.h> /* getchar, printf, putchar */
#include <ctype.h> /* isalpha, toupper */
int main()
{
/* morse codes of the 26 letters */
char *morse[26] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
"-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};
char ch;
/* obtain input */
printf("Enter a letter: ");
ch = getchar();
if (isalpha(ch))
printf("Morse code of %c is %s\n", ch, morse[toupper(ch) - ’A’]);
else
printf("Error: %c is not a letter\n", ch);
return 0;
}
#包括/*getchar、printf、putchar*/
#包括/*isalpha,toupper*/
int main()
{
/*26个字母的莫尔斯电码*/
char*morse[26]={
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
"-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};
char ch;
/*获取输入*/
printf(“输入字母:”);
ch=getchar();
if(艾萨帕(ch))
printf(“%c的莫尔斯电码是%s\n”,ch,Morse[toupper(ch)-'A']);
其他的
printf(“错误:%c不是字母\n”,ch);
返回0;
}

您听说过循环和数组索引吗?请逐步开发。在尝试摩尔斯电码之前,读取输入字符串并输出每个字母。尝试
fopen
文件,检查它是否有效,
fgets
每个字符串,检查它们是否有效,逐字符打印它们(作为ASCII值和文本字符)。当您最终转换为摩尔斯电码时,您必须检查字符的范围,以防有
空格
换行符
(在传输过程中通过短时间或长时间暂停进行编码!)请研究
fgets()
,您将找到使用示例。它将文件中的一行文本读入您提供的缓冲区。在编码到Morse之前,将整个未知文件读入字符串数组要复杂得多。我不确定你的任务——是为字符数组分配内存,还是仅仅是从文件中进行莫尔斯编码?您的示例甚至不包含循环或结束检查。您可以打开文件并循环,直到读取
EOF
(到
int ch
而不是
char ch
),然后将找到的内容转换为Morse,例如。PS不要忘记数字
0
9
也有摩尔斯电码。@WeatherVane我会查看FGET,再次感谢。任务是将未知长度的未知数量字符串的txt文件读入指针数组(每个指针指向字符串的第一个字符),然后转换为morse。你听说过循环和数组索引吗?逐步开发。在尝试摩尔斯电码之前,读取输入字符串并输出每个字母。尝试
fopen
文件,检查它是否有效,
fgets
每个字符串,检查它们是否有效,逐字符打印它们(作为ASCII值和文本字符)。当您最终转换为摩尔斯电码时,您必须检查字符的范围,以防有
空格
换行符
(在传输过程中通过短时间或长时间暂停进行编码!)请研究
fgets()
,您将找到使用示例。它将文件中的一行文本读入您提供的缓冲区。在编码到Morse之前,将整个未知文件读入字符串数组要复杂得多。我不确定你的任务——是为字符数组分配内存,还是仅仅是从文件中进行莫尔斯编码?您的示例甚至不包含循环或结束检查。您可以打开文件并循环,直到读取
EOF
(到
int ch
而不是
char ch
),然后将找到的内容转换为Morse,例如。PS不要忘记数字
0
9
也有摩尔斯电码。@WeatherVane我会查看FGET,再次感谢。任务是将一个数量未知、长度未知的字符串的txt文件读入一个指针数组(其中每个指针指向字符串的第一个字符),然后转换为morse。