题目要求输入一个字符串。要求使用指针的方式遍历该字符串,并统计字符串中空格的个数。
时间: 2024-03-17 09:41:04 浏览: 23
好的,您可以参考以下代码实现:
```c
#include <stdio.h>
int count_spaces(char *str) {
int count = 0;
while (*str != '\0') { // 遍历字符串直到结尾
if (*str == ' ') { // 如果当前字符是空格,计数器加一
count++;
}
str++; // 移动指针到下一个字符
}
return count;
}
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str); // 输入字符串
int spaces = count_spaces(str); // 统计空格个数
printf("该字符串中共有 %d 个空格\n", spaces);
return 0;
}
```
在上面的代码中,`count_spaces` 函数使用指针 `str` 遍历字符串,如果当前字符是空格则计数器加一,并将指针移动到下一个字符。最后返回计数器的值。在 `main` 函数中,首先输入字符串,然后调用 `count_spaces` 函数统计空格个数并输出。
相关问题
c语言使用指针遍历字符串,求字符串的个数
可以使用指针来遍历字符串,并计算字符串的个数。以下是实现代码:
```
#include <stdio.h>
int main() {
char str[] = "hello world!"; // 定义一个字符串
char *p = str; // 定义一个指向字符串的指针
int count = 0; // 统计字符串的个数
while (*p != '\0') { // 遍历字符串,直到遇到结束符 '\0'
if (*p != ' ') { // 遇到非空格字符,将计数器加 1
count++;
while (*p != ' ' && *p != '\0') { // 跳过当前单词的所有字符
p++;
}
} else { // 遇到空格字符,指针向后移动一位
p++;
}
}
printf("字符串中有 %d 个单词\n", count);
return 0;
}
```
在这个实现中,我们首先定义了一个字符串 `str`,然后定义了一个指向字符串的指针 `p`,并将其初始化为指向字符串的首地址。接着,我们使用 `while` 循环遍历字符串,直到遇到字符串的结束符 '\0' 为止。在遍历过程中,我们使用一个计数器 `count` 统计字符串中单词的个数,如果遇到了非空格字符,就将计数器加 1,并跳过当前单词的所有字符;否则,就将指针向后移动一位。最后,输出计数器的值,即为字符串中单词的个数。
定义一个字符指针变量,输入一串字符,统计字符串的个数
好的,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = NULL; // 定义字符指针变量
int count = 0; // 统计字符串的个数
str = (char*)malloc(sizeof(char)*100); // 动态分配内存空间
if(str == NULL){
printf("分配内存失败!\n");
return -1;
}
printf("请输入一串字符:");
scanf("%s", str);
for(int i = 0; i < strlen(str); i++){
if(str[i] != ' '){ // 如果不是空格,说明是一个单词
count++; // 统计单词个数
while(str[i] != ' ' && str[i] != '\0'){ // 继续遍历,直到遇到空格或者字符串结束
i++;
}
}
}
printf("字符串中单词的个数为:%d\n", count);
free(str); // 释放内存空间
return 0;
}
```
代码的主要思路是通过遍历字符串,统计单词的个数。每当遇到一个空格时,说明前面的字符组成了一个单词,所以将计数器加一,并继续遍历直到遇到下一个非空格字符或者字符串结束。最后输出单词的个数。