【发布时间】:2011-12-11 01:03:01
【问题描述】:
我正在尝试编写代码来删除句子的所有前导、尾随和中间空格,但在单词之间只保留一个空格。
例如,如果输入是
" This is my string "
输出应该是
"This is my string"
到目前为止,我想出了这个:
#include <stdio.h>
void cascade(char str[], int i);
main()
{
char str[100] = " This is my string ";
int i = 0;
while (str[i] != '\0') {
if (str[i] == ' ' && str[i + 1] == ' ')
cascade(str, i);
i++;
}
printf("%s\n", str);
}
void cascade(char str[], int i)
{
while(str[i] != '\0') {
str[i] = str[i + 1];
i++;
}
str[i + 1] = '\0';
}
如果有人能提出一些想法,我将不胜感激,谢谢。
【问题讨论】:
-
你可以使用字符串函数吗?
-
是的,我们可以使用 string.h 库。
-
你如何定义“单词”?如果您的“单词”包含制表符、换行符或其他空白字符会怎样?
-
请注意,您不仅要尝试将多个空格折叠成一个空格,还需要删除字符串开头和结尾的所有空格。这让事情有点复杂。
-
这只是一个硬编码的变量,所以不会改变
标签: c