C 如何存储单个字符的缓冲区并将其打印为字符串?

C 如何存储单个字符的缓冲区并将其打印为字符串?,c,buffer,translation,C,Buffer,Translation,我已经发布了一些关于我的项目的问题,这些问题都很有帮助,但我仍然不确定其中的一部分 我正在创建一个将ASCII转换为ASH和ASH转换为ASCII的转换器。我现在已成功地将ASCII转换为ASH,但无法将ASH转换为ASCII。我已经创建了一个名为“Asistring2AshString”的函数,该函数运行良好,但现在我必须创建另一个名为“AshString2Ashistring”的函数。但是,有人告诉我,对于这个函数,我需要将用户输入的每个字符保存到一个临时缓冲区中,直到出现“/”,此时我需要

我已经发布了一些关于我的项目的问题,这些问题都很有帮助,但我仍然不确定其中的一部分

我正在创建一个将ASCII转换为ASH和ASH转换为ASCII的转换器。我现在已成功地将ASCII转换为ASH,但无法将ASH转换为ASCII。我已经创建了一个名为“Asistring2AshString”的函数,该函数运行良好,但现在我必须创建另一个名为“AshString2Ashistring”的函数。但是,有人告诉我,对于这个函数,我需要将用户输入的每个字符保存到一个临时缓冲区中,直到出现“/”,此时我需要通过调用“ASHstring2ASCIIstring”函数(我现在正在请求帮助创建)将临时缓冲区中的所有字符作为完整字符串打印出来。然而,我不知道该怎么做,我希望这里的人能帮我一把:)

谢谢

更新:我现在在一些帮助下创建了这个函数,但由于某些原因,它没有按预期将ASH打印为ASCII翻译,我在下面发布了更新的代码

char ASH_a[]=“*”;
炭灰b[]=“!!*”;
char ASH_c[]=“!!@”;
char ASH_d[]=“*!”;
char ASH_e[]=“!”;
char ASH_f[]=“!*!”;
char ASH_g[]=“**”;
炭灰h[]=“!**”;
char ASH_i[]=“!!”;
char ASH_j[]=“*!!”;
char ASH_k[]=“*@”;
char ASH_l[]=“!*@”;
char ASH_m[]=“!*”;
char ASH_n[]=“!@”;
char ASH_o[]=“@*”;
char ASH_p[]=“!@!”;
char ASH_q[]=“*!@”;
char ASH_r[]=“!@*”;
char ASH_s[]=“@!”;
字符灰t[]=“@”;
char ASH_[]=“@”;
char ASH_v[]=“**!”;
char ASH_w[]=“***”;
char ASH_x[]=“*@!”;
char ASH_y[]=“!@”;
char ASH_z[]=“**@”;
//char ASH_1[]=“@!!*”;
//char ASH_2[]=“@!!@”;
//char ASH_3[]=“@!*!”;
//char ASH_4[]=“@!**”;
//char ASH_5[]=“@!*@”;
//char ASH_6[]=“@!@!”;
//char ASH_7[]=“@!@*”;
//char ASH_8[]=“@!@”;
//char ASH_9[]=“@*!!”;
//char ASH_0[]=“@!!!”;
//char ASH.[]=“@!!”;
//char ASH_u3;,[]=“@!*”;
//字符灰[]=“@**”;
//恰尔阿什![] = "@*@";
//char ASH_u3;+[]=“@!”;
//char ASH \-[]=“@@*”;
//char ASH_*[]=“@@@@”;
//char ASH_u3;/[]=“@!@”;
字符t[]=“灰码”;
字符缓冲区1[100];
常数int oblen=100;
char-ob[oblen];
无效设置(){
//将安装代码放在此处,以便运行一次:
Serial.begin(9600);
//Serial.println(ASH2ASCII(!**);//这些是我想使用ASH2ASCII函数转换为ASCII的ASH字符
//Serial.println(ASH2ASCII(“!”);
//Serial.println(ASH2ASCII(!*@));
//Serial.println(ASH2ASCII(!*@));
//Serial.println(ASH2ASCII(“@*”);
//ASCISTRING2字符串(t、ob、oblen);
//序列号println(ob);
usinput(buffer1);
串行打印(1);
chardecise(buffer1);
}
void chardecise(char*buffer1){//char使用true和false返回值决定哪个对isASH的结果起作用
if(isASH(1)){
Serial.println(“已确认为ASH-”);
ashtring2asistring(buffer1,ob);//传递包含buffer1和ob的函数
序列号println(ob);
}否则{
Serial.println(“已被识别为ASCII-”;
asciistring2ashring(buffer1、ob、oblen);
序列号println(ob);
}
}
无效usinput(字符*ib){
焦英寸;
int i=0;
做{
而(!Serial.available()){};
inChar=Serial.read();
如果(英寸=='\n'){
打破
}否则{
ib[i]=英寸;
i++;
}
ib[i]='\0';
}虽然(正确);
}
布尔·伊萨什(字符*buffer1)
{
if(buffer1[0]!='*'&&buffer1[0]!='!'&&buffer1[0]!='@')返回false;
返回true;
}
int ashtring2asistring(char*buffer,char*ob)//将ash转换为ascii
{
char-str[10];
int j=0;
int l=0;
while(*缓冲区){
如果(*buffer=='/'){//点击斜杠
str[j]='\0';//空缓冲区
ob[l++]=ASH2ASCII(str);
j=0;
}否则{
如果(j+1int ASHstring2ASCIIstring(char *buffer, char *ob)
{
    char *token;
    int l = 0;

    token = strtok(buffer, "/");
    while (token) {
        println(token);
        ob[l++] = ASH2ASCII(token);   // Note: No overflow check!
        token = strtok(NULL, "/");
    }
    ob[l] = '\0';
    return l;
}
int ASHstring2ASCIIstring(char *buffer, char *ob)
{
    char str[10];
    int j = 0;
    int l = 0;

    while (*buffer) {
        if (*buffer == '/') {
            str[j] = '\0';
            ob[l++] = ASH2ASCII(str);
            j = 0;
        } else {
            if (j + 1 < sizeof(str)) {
                str[j++] = *buffer;
            }
        }

        buffer++;
    }

    ob[l] = '\0';
    return l;
}