从键盘读入一个字符串,去掉其中所有的空格得到一个新串后再输出(只能定义一个字符数组,不可以定义两个字符数组,可以根据编程需要定义字符指针以及其他变量)。
时间: 2023-04-27 09:06:42 浏览: 112
可以使用字符指针和循环来实现该功能。具体步骤如下:
1. 定义一个字符数组,用于存储输入的字符串。
2. 使用 scanf 函数从键盘读入字符串,存储到字符数组中。
3. 定义一个字符指针,指向字符数组的首地址。
4. 使用循环遍历字符数组中的每个字符,如果该字符不是空格,则将其存储到字符指针指向的位置,并将字符指针向后移动一位。
5. 最后在字符指针指向的位置添加一个字符串结束符 '\',输出字符数组即可。
示例代码如下:
```c
#include <stdio.h>
int main() {
char str[100]; // 定义字符数组
scanf("%s", str); // 从键盘读入字符串
char *p = str; // 定义字符指针,指向字符数组的首地址
while (*p != '\') { // 遍历字符数组中的每个字符
if (*p != ' ') { // 如果该字符不是空格
*str++ = *p; // 将其存储到字符指针指向的位置
}
p++; // 将字符指针向后移动一位
}
*str = '\'; // 在字符指针指向的位置添加字符串结束符
printf("%s", str); // 输出字符数组
return ;
}
```
相关问题
编写程序exp7_3.c,从键盘读入一个字符串,去掉其中所有的空格得到一个新串后再输出(只能定义一个字符数组,不可以定义两个字符数组,可以根据编程需要定义字符指针以及其他变量)。
以下是exp7_3.c程序的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main()
{
char str[MAX_LEN];
char *p = str;
int i;
printf("请输入一个字符串:");
fgets(str, MAX_LEN, stdin);
for (i = ; i < strlen(str); i++)
{
if (str[i] != ' ')
{
*p = str[i];
p++;
}
}
*p = '\';
printf("去掉空格后的字符串为:%s\n", str);
return ;
}
```
程序的思路是:先定义一个字符数组str和一个字符指针p,用fgets函数从键盘读入一个字符串存入str中,然后遍历str中的每个字符,如果不是空格就将其存入p所指向的位置,最后在p的末尾加上'\',得到一个新的字符串。最后输出新的字符串即可。
从键盘读入一行字符串,以空格作为分隔符,将内容存入字符串数组中。 (
您好!感谢您的提问。针对您的问题,可以使用C++标准库中的string和stringstream来实现。以下是代码示例:
```
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string inputStr;
getline(cin, inputStr); // 从键盘读入一行字符串
stringstream ss(inputStr);
string token;
string strArr[100]; // 假设最多有100个单词
int i = 0;
while (getline(ss, token, ' ')) { // 以空格为分隔符提取字符串
strArr[i++] = token;
}
// 输出存入数组中的字符串
for (int j = 0; j < i; j++) {
cout << strArr[j] << endl;
}
return 0;
}
```
希望能够帮到您!如果您还有其他问题,欢迎继续提问。
阅读全文