编写程序,输入一个长度小于100字符串,以回车键结束输入,保存在数组a中,假定输入的字符串中只包含字母和*号。除了尾部的*号之外,将字母串中其他*号全部删除。c语言
时间: 2023-03-10 09:39:45 浏览: 283
可以使用以下代码:int i=0;
while (a[i]!='\0'){
if (a[i]=='*' && a[i+1]!='\0'){
a[i]='\0';
for (int j=i;j<100;j++){
a[j]=a[j+1];
}
}
else{
i++;
}
}
相关问题
如何将ESP32串口输出的字符写进一个字符数组,当遇到回车键时,从另一个串口打印这个字符数组,并判定是不是ATGA UDI R
在ESP32中,你可以通过读取串口输入并逐个存储字符到字符数组中来实现这一功能。首先,你需要初始化两个串口,假设一个用于接收用户输入(例如UART0),另一个用于发送数据(例如UART1)。以下是简单的步骤:
1. 定义字符数组(如`char inputBuffer[50]`)来存储接收到的数据。
2. 当从UART0接收到数据时,检查是否是回车符('\r'),如果是,则停止接收并将剩余的数据保存到数组。
3. 使用while循环遍历字符数组,直到遇到'\n'(换行符),这意味着输入的一行已经接收完毕。
```c
void handle_uart0_input() {
while (uart0_available()) { // 检查UART0是否有新数据
char c = uart0_read(); // 读取一个字符
if (c == '\r') { // 如果是回车符
break;
}
inputBuffer[current_index++] = c; // 存储字符到数组
}
inputBuffer[current_index] = '\0'; // 添加结束符
// 打印字符数组
Serial1.println(inputBuffer);
// 判定字符串是否是"ATGA UDI R"
bool isAtgaUdiR = strncasecmp(inputBuffer, "ATGA UDI R", strlen("ATGA UDI R")) == 0;
if (isAtgaUdiR) {
Serial1.println("Detected ATGA UDI R command.");
} else {
Serial1.println("Command not recognized.");
}
}
```
记得定期调用`handle_uart0_input()`函数处理新的输入。在这个例子中,我们假定了两个串口的初始化、缓冲区大小以及字符串比较已经完成。
输入一个字符串,该字符串不包含空格,请你按输入顺序输出所有的小写字母c++,不要用std库,输入输出不要任何字符
要在 C++ 中不使用标准库完成这个任务,你需要自己处理输入、存储字符以及控制输出。以下是一个简单的示例程序,它接受用户的键盘输入,然后逐个打印小写字母:
```cpp
#include <iostream>
// 定义用于存储字符的数组(这里假设大小足够)
char alphabet[26] = {0};
int main() {
// 初始化字母表为大写英文字母
for (int i = 0; i < 26; ++i) {
alphabet[i] = 'A' + i;
}
char inputChar;
std::cout << "请输入一个不含空格的字符串(每个字符后按回车):" << std::endl;
// 遍历输入并转换为小写
while ((inputChar = getchar()) != EOF && isalpha(inputChar)) { // 使用getchar()获取非EOF字符
if (inputChar >= 'A' && inputChar <= 'Z') { // 如果是大写字母
inputChar += ('a' - 'A'); // 转换为对应的小写
}
printf("%c", inputChar); // 打印小写字母
}
return 0;
}
```
在这个程序中,我们没有使用`std::cin`和`std::cout`,而是直接从键盘读取字符(`getchar()`),并手动控制输出(`printf()`)。注意,此程序假定用户输入的都是ASCII码中的英文字符。
阅读全文
相关推荐














