c语言:用指针实现在具有N个元素的一维字符型数组中删除所有空格字符。
时间: 2024-02-05 13:13:08 浏览: 23
可以使用指针遍历一维字符型数组,将非空格字符移动到新的数组中。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char *str) {
int i = 0, j = 0;
while (str[i]) {
if (str[i] != ' ') {
str[j] = str[i];
j++;
}
i++;
}
str[j] = '\0';
}
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // remove newline character
removeSpaces(str);
printf("String after removing spaces: %s\n", str);
return 0;
}
```
使用 `fgets` 函数获取用户输入的字符串,并使用 `strcspn` 函数去掉末尾的换行符。然后调用 `removeSpaces` 函数,该函数使用两个指针 `i` 和 `j` 遍历字符串,如果当前字符不是空格,就将其移动到新的位置。最后将新的位置的字符设置为字符串结束符。
相关问题
c语言:用指针实现在具有N个元素的一维整型数组中查找数据x。
以下是用指针实现在一维整型数组中查找数据x的C代码:
```c
#include <stdio.h>
// 函数声明
int* find(int* arr, int n, int x);
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 5;
int* result = find(arr, n, x);
if (result != NULL) {
printf("找到了数据%d,它在数组中的下标为%d\n", x, result - arr);
} else {
printf("没有找到数据%d\n", x);
}
return 0;
}
// 函数定义
int* find(int* arr, int n, int x) {
int* p = arr;
for (int i = 0; i < n; i++) {
if (*p == x) {
return p;
}
p++;
}
return NULL;
}
```
在主函数中,首先定义了一个一维整型数组`arr`,并计算它的长度`n`,以及要查找的数据`x`。然后调用`find()`函数,在其中通过一个指针`p`遍历整个数组,找到第一个值等于`x`的元素,并将它的指针返回。
在主函数中,判断`find()`函数返回的指针是否为`NULL`,如果不是,就说明找到了数据`x`,并输出它在数组中的下标;否则,就说明没有找到数据`x`。
用C语言实现:定义一个含有10个元素的一维数组,求数组中所有元素的和
好的,以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 定义含有10个元素的一维数组
int sum = 0; // 初始化和为0
// 遍历数组,求和
for(int i = 0; i < 10; i++) {
sum += arr[i];
}
printf("数组中所有元素的和为:%d\n", sum); // 输出结果
return 0;
}
```
该代码首先定义了一个含有10个元素的一维数组,然后通过遍历数组的方式计算数组中所有元素的和,并最终输出结果。