C语言空格分隔字符串输入
时间: 2024-11-20 07:42:19 浏览: 26
在C语言中,空格分隔字符串输入通常涉及到用户从标准输入(如键盘)读取一系列字符,并通过空格作为分隔符将它们组合成一个字符串。这需要遍历输入流,遇到空格就停止当前单词的收集,直到下一次遇到非空格字符才开始新的单词。
下面是一个简单的示例程序,展示了如何使用`fgets()`函数配合`strtok()`函数实现这个功能:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
char* token;
printf("请输入以空格分隔的词语:");
fgets(input, sizeof(input), stdin); // 读取一行输入
input[strcspn(input, "\n")] = '\0'; // 去除行尾的换行符
token = strtok(input, " "); // 分割字符串," "指代空格作为分隔符
while (token != NULL) {
printf("%s ", token); // 输出每个词
token = strtok(NULL, " ");
}
return 0;
}
```
在这个例子中,`strtok()`会返回一个指向当前单词的指针,每次调用都会处理下一个单词,直到没有更多单词为止。
相关问题
用c语言写一个函数,输入一行以空格分隔的字符串,将此字符串中的最长单词输出写一个函数,输入一行以空格分隔的字符串,将此字符串中的最长单词输出
#include <stdio.h>
#include <string.h>// 获取最长单词
char *getLongestWord(char *str)
{
int len = strlen(str);
int i = 0;
int max_len = 0;
char *longest_word = NULL; while (i < len)
{
int start_index = i;
int end_index = i;
while (str[end_index] != ' ' && end_index < len)
{
end_index++;
} int word_len = end_index - start_index;
if (word_len > max_len)
{
longest_word = &str[start_index];
max_len = word_len;
} i = end_index + 1;
} return longest_word;
}int main()
{
char str[] = "this is a test string";
char *longest_word = getLongestWord(str);
printf("longest word is: %s\n", longest_word);
return 0;
}
设计一个关于c语言统计输入字符串单词个数,单词之间用空格分隔输出结果。
在C语言中设计一个程序来统计输入字符串中的单词数量,你可以遵循以下步骤:
1. 首先,创建一个函数,比如`count_words(char* input)`,它接受一个指向字符串的指针作为参数。
2. 使用`strlen()`函数获取输入字符串的长度,然后从0开始遍历这个字符串。
3. 初始化一个整数变量`word_count`,用于记录单词数量,初始值设为0。
4. 创建一个临时变量`current_word`,用于存储当前单词。当遇到空格字符(' ')时,检查`current_word`是否为空,如果非空则表示找到了一个完整的单词,将`word_count`加一并清零`current_word`。
5. 如果当前字符不是空格,就将其添加到`current_word`中。遍历完整个字符串后,同样检查`current_word`是否为空,如果不为空,也意味着最后一个单词未结束,这时也需要将`word_count`加一。
6. 返回`word_count`作为最终的结果。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <string.h>
int count_words(char* input) {
int word_count = 0;
char current_word[100] = "";
for (int i = 0; input[i]; i++) {
if (input[i] == ' ') {
if (strlen(current_word)) {
word_count++;
strcpy(current_word, "");
}
} else {
strncat(current_word, &input[i], 1);
}
}
// 判断最后是否有单词
if (strlen(current_word)) {
word_count++;
}
return word_count;
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // 移除换行符
int wordCount = count_words(input);
printf("Number of words: %d\n", wordCount);
return 0;
}
```
阅读全文