C语言代码,利用字符数组,要求去掉字符串的空格
时间: 2023-06-17 20:02:28 浏览: 44
可以使用两个指针来实现去掉字符串的空格,一个指针指向原始字符串,另一个指针指向去掉空格后的字符串,遇到空格时原始指针跳过该空格,目标指针不变,否则将原始指针指向的字符复制到目标指针指向的位置,并将两个指针都向后移动一位。最后在目标字符串末尾加上'\0'即可。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
void remove_space(char *str) {
char *p = str, *q = str;
while (*p) {
if (*p == ' ') {
p++;
} else {
*q++ = *p++;
}
}
*q = '\0';
}
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, 100, stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉fgets读取的换行符
remove_space(str);
printf("去掉空格后的字符串为:%s\n", str);
return 0;
}
```
注意,这里使用了fgets函数来读取输入的字符串,因为gets函数存在安全性问题,不建议使用。同时,为了去掉fgets读取的换行符,我们使用了strcspn函数来找到换行符的位置并将其替换成'\0'。
相关问题
C语言去掉字符串数组中的空格
好的,可以使用C语言中的字符串操作函数和循环语句来去掉字符串数组中的空格。具体代码如下所示:
``` c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str); // 输入字符串
int len = strlen(str); // 获取字符串长度
int i, j;
// 去掉字符串开头的空格
for (i = 0; i < len; i++) {
if (str[i] != ' ') {
break;
}
}
// 去掉字符串结尾的空格
for (j = len - 1; j >= 0; j--) {
if (str[j] != ' ') {
break;
}
}
// 去掉字符串中间的空格
int k = 0;
for (; i <= j; i++) {
if (str[i] != ' ') {
str[k++] = str[i];
}
}
str[k] = '\0'; // 在字符串末尾添加'\0',表示字符串结束
printf("去掉空格后的字符串为:%s\n", str);
return 0;
}
```
输入一个字符串后,程序会去掉字符串开头和结尾的空格,以及中间的空格,并输出结果。
c语言输入字符串数组
在C语言中,可以通过以下方式输入字符串数组:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main() {
char strArray[MAX_SIZE][MAX_SIZE];
int numStrings;
printf("请输入字符串数组的大小:");
scanf("%d", &numStrings);
// 输入字符串数组的元素
printf("请输入字符串数组的元素:\n");
for (int i = 0; i < numStrings; i++) {
printf("请输入第%d个字符串:", i + 1);
scanf("%s", strArray[i]);
}
// 打印输入的字符串数组
printf("\n输入的字符串数组为:\n");
for (int i = 0; i < numStrings; i++) {
printf("%s\n", strArray[i]);
}
return 0;
}
```
在这个示例中,我们首先定义了一个二维字符数组 `strArray`,用于存储字符串。`MAX_SIZE` 定义了字符数组的最大大小,你可以根据需要修改它。
然后,通过 `scanf` 函数获取用户输入的字符串数组的大小 `numStrings`。接下来,使用一个循环来逐个输入字符串数组的元素。
最后,通过另一个循环打印出用户输入的字符串数组。
请注意,在使用 `scanf` 输入字符串时,使用 `%s` 格式化字符。这个格式化字符会读取一个没有空格的字符串,以空格或换行符作为结束标志。
希望这个示例能够帮助你输入字符串数组!如有疑问,请随时提问。