哈哈文案句子网—文案句子大全

哈哈文案句子网—文案句子大全

c语言输入一行字符

59

一、程序思路

输入处理 :使用`gets()`函数读取一行输入(注意:`gets()`存在安全隐患,建议使用`fgets()`替代)。

单词计数

遍历字符串,使用一个标志变量`word`判断是否为新单词的开始(即前一个字符是否为空格)。

当遇到空格且前一个字符不是空格时,表示一个单词结束,计数器`num`加1。

输出结果:

循环结束后输出单词总数。

二、代码实现

```c

include

int main() {

char string;

int num = 0, word = 0;

// 使用fgets读取一行输入,限制输入长度为99个字符(最后一个字符为'\0')

if (fgets(string, sizeof(string), stdin) == NULL) {

printf("输入错误\n");

return 1;

}

// 去除输入末尾的换行符(如果存在)

size_t len = strlen(string);

if (len > 0 && string[len - 1] == '\n') {

string[len - 1] = '\0';

}

// 遍历字符串统计单词

for (int i = 0; string[i] != '\0'; i++) {

if (string[i] == ' ') {

word = 0; // 遇到空格,重置单词标志

} else if (word == 0) {

num++; // 新单词开始,计数器加1

word = 1; // 设置单词标志

}

}

printf("单词数量: %d\n", num);

return 0;

}

```

三、代码说明

输入处理

使用`fgets(string, sizeof(string), stdin)`读取输入,避免缓冲区溢出。

检查输入是否成功,失败则输出错误信息并退出程序。

去除输入末尾的换行符,避免影响统计结果。

单词计数逻辑

使用`for`循环遍历字符串中的每个字符。

当遇到空格且前一个字符不是空格时,表示一个单词结束,`num`加1。

使用`word`标志位判断是否为新单词的开始。

输出结果

循环结束后,输出统计的单词数量。

四、示例运行

```

输入:Hello world this is a test

输出:单词数量: 6

```

五、注意事项

安全性:

`gets()`函数存在缓冲区溢出风险,建议使用`fgets()`替代,并限制输入长度。

输入限制:本程序限制输入长度为99个字符(最后一个字符为`'\0'`),可根据需要调整`sizeof(string)`的值。

通过上述方法,可以高效地统计输入行中以空格分隔的单词数量。