单词之间只留一个空格作间隔

我要成为强力的PM 2009-11-15 11:17:28
设计一函数。让 "this is a silly program" 变成"this is a silly program",急求,谢谢!!
...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿发伯 2009-11-15
  • 打赏
  • 举报
回复
char *zhengli(char *p)
{
char *q, *q1;
q = q1 = p;
while (*q1)
{
*q ++ = *q1;
if (*q1 ++ == ' ')
while (*q1 == ' ')
*q1 ++;
}
*q = '\0';
return p;
}

int main(int argc, char* argv[])
{
char s[]="this is a silly porgram";
printf("%s\n", zhengli(s));
system("pause");
return 0;
}
  • 打赏
  • 举报
回复
我做了一下,但是没结果,您帮我看一下,谢谢!
#include"stdio.h"
char *zhengli(char *p)
{
char *q;
int i=0,k=0;

for(p=q;p[i]!='\0';i++){
while(1){
k=i;
if(p[k]!=' ') break;
if(p[k]==' '){
if(p[k+1]==' '){
p[k+1]=p[k+2];
}
}
k++;
}
i=k;
}
return q;

}

main()
{
char s[]="this is a silly porgram";
char*a;

a=zhengli(s);
printf("%s\n",a);
getch();
}
  • 打赏
  • 举报
回复
大哥,我是初学者,你就给我说一下吧,very thankyou!
阿发伯 2009-11-15
  • 打赏
  • 举报
回复
LZ如果连这点简单的代码都写不出来,就不用继续学了
Proteas 2009-11-15
  • 打赏
  • 举报
回复

#include <tchar.h>
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>

TCHAR* MergeWhiteSpace(TCHAR* sourceBuf = NULL);

int main(int argc, char* argv[])
{
TCHAR* srcStr = _T(" Hello World! \n");
printf(srcStr);

TCHAR* resultStr = MergeWhiteSpace(srcStr);

if (NULL == resultStr)
exit(EXIT_FAILURE);

printf(resultStr);

free(resultStr);

getchar();

return 0;
}

TCHAR* MergeWhiteSpace(TCHAR* sourceBuf)
{
if (NULL == sourceBuf)
return NULL;

int bufSize = _tcslen(sourceBuf) + sizeof(TCHAR);

TCHAR* buf = (TCHAR*)malloc(bufSize);
assert(NULL != buf);

TCHAR* resultStr = buf;

memset(buf, 0x00, bufSize * sizeof(TCHAR));

bool isWhite = false;

while (*sourceBuf)
{
if (*sourceBuf != 0x20)
{
if (isWhite)
*buf++ = 0x20;

*buf++ = *sourceBuf++;
isWhite = false;
}
else
{
sourceBuf++;
isWhite = true;
continue;
}

}

return resultStr;
}
acka2009 2009-11-15
  • 打赏
  • 举报
回复
#include "iostream.h"
char* DealBackspace(char** q);
int main()
{
char* p="this is a silly program";
cout<<DealBackspace(&p)<<endl;
return 0;
}

char* DealBackspace(char** q)
{
int len,i,j;
char *x,*y;
len=strlen(*q);
i=len;
j=0;
x=*q;
y=++(*q);
char* temp=new char[len];
while(i)
{
if(*x==' '&&*y==' ');
else
{
temp[j]=*x;
j++;
}
x++;
y++;
i--;
}
temp[j]='\0';
return temp;
}

//自己做的,方法愚笨,仅供参考。。。呵呵
东大坡居士 2009-11-15
  • 打赏
  • 举报
回复
去空格吗哈哈
阿发伯 2009-11-15
  • 打赏
  • 举报
回复
while (*q1 == ' ')
*q1 ++;
改为:
while (*q1 == ' ')
q1 ++;

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧