C++ C++;将串行输入读取到字符串

C++ C++;将串行输入读取到字符串,c++,c,input,console,serial-port,C++,C,Input,Console,Serial Port,我需要从控制台获取字符串的串行输入。 当用户在控制台中键入“xyz”并按enter键时,字符串“input”应定义为“xyz”。从那时起,我将解释字符串。 这就是我目前拥有的: 定义: char input[] = {0}; char bufferChar[] = {0}; 使用: 我是c语言的新手,如果这段代码不好,我很抱歉。 谢谢你, 莱纳斯 这声明了一个包含一个元素的数组 bufferChar[1] = bufferChar2; 这将尝试设置单元素数组中第二个元素的值。缓冲区溢出。未定

我需要从控制台获取字符串的串行输入。 当用户在控制台中键入“xyz”并按enter键时,字符串“input”应定义为“xyz”。从那时起,我将解释字符串。 这就是我目前拥有的:

定义:

char input[] = {0};
char bufferChar[] = {0};
使用:

我是c语言的新手,如果这段代码不好,我很抱歉。 谢谢你, 莱纳斯

这声明了一个包含一个元素的数组

bufferChar[1] = bufferChar2;
这将尝试设置单元素数组中第二个元素的值。缓冲区溢出。未定义的行为

strcpy(input[1], input[1]);
这毫无意义。除了想要
strcpy
()自身之上的东西的可疑原因之外,
input
是一个
char
数组,因此
input[1]
是一个
char
值,而
strcpy()
接受
char*
参数

这一行肯定让编译器发出了一大堆警告和/或错误。请不要忽略来自编译器的诊断消息。这是编译器告诉你你做错了

strcat(input[1], bufferChar[1]);
因此,我们正在尝试
strcat
()另一对
char
s,而不是
char*
s。这不会比尝试同样的方法更好

即使您的编译器接受这一点,根据我的统计,生成的代码也会以至少三种或四种不同的方式崩溃

您需要:

  • 声明具有足够大小的
    input
    charBuffer
    数组,以便处理它们

  • 将指针(而不是字符)传递到
    strcpy()
    (如果需要)和
    strcat()

  • char*
    参数,到
    strcpy()
    strcat()
    数组必须是以null结尾的字符串。“\0”-终止每个参数是您的责任。虽然有几种方法可以“免费”获取此信息,但如果您有疑问,请明确地0-终止它们


  • 请添加一些代码。@哈里补充说:“我现在的状态看起来更像C++,而不是C。你是用C语言还是用C++编程的?因为串口不是C或C++的标准,是哪个库?哪个站台?嵌入的直接访问UART?@托马斯与ARDUIO一起工作,这应该是C++的变量。不过在这一点上我不确定。
    strcpy(input[1], input[1]);
    
    strcat(input[1], bufferChar[1]);