C语言问题:整理字符串

整理字符串,将字符串的前导空白符和后随空白符删去,并将字符串中非空白字符之间的连续的多个空白符只保留一个,而去掉多余的空白符.求C代码!或者告诉算法也可以!求高手指点!... 整理字符串,将字符串的前导空白符和后随空白符删去,并将字符串中非空白字符之间的连续的多个空白符只保留一个,而去掉多余的空白符.
求C代码!或者告诉算法也可以!求高手指点!
展开
 我来答
风骚的可乐
2011-04-12 · TA获得超过1550个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:610万
展开全部
基本思路:
使用标准库中的strtok函数分离字符串中除空白符外的各个子字符串,再用strcpy和strcat进行连接。
范例:(Dev-C++调试通过)

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char source[] = "\t A string\tof ,,tokens\nand some more tokens"; // 测试用字符串
char seps[] = " ,\t\n"; // 空白字符的种类可以任意添加

int stringToken(char* src, char* res) // 字符串处理函数
{
/* 在函数使用前,必须确保src和res均为合法指针
** src: [in] 源字符串
** res: [out] 结果字符串
*/
*res = '\0';
char *token = NULL;
token = strtok( src, seps ); // 取第一个子串
while( token != NULL ) // 源字符串如果未结束
{
strcat( res, token );
strcat( res, " " );
token = strtok( NULL, seps ); // 取下一个子串
}
res[strlen(res)-1]='\0'; // 去除尾部空格
return 0;
}

int main( void )
{
char* result = (char*)malloc( 256 * sizeof(char) ); // 为指针申请空间
stringToken( source, result );
printf( "%s", result );
free(result); result = NULL; // 销毁指针
system("pause");
return 0;
}
追问
嗯十分感谢!不过我在Mircrosoft visual c++上测试有一个错误……怎么也看不出,而且我指针不大会用,能再帮忙看看么?要是实在麻烦就算了,我会采纳您的答案的。
追答
我的VisualStudio2010旗舰版调试通过,没问题。
如果你用的是VC6,建议换版本,或者至少到微软官方下载VC6的SP1和SP2依次安装。原版bug太多了。或者直接用小巧的Dev-C++或者其他支持gcc编译器的编程工具,对标准C/C++支持比较好。

另,中文汉化的VC6建议不要用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式