c语言字符串操作问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:10:00
题目是:
编写完整程序:输入一个字符串(英文句子)存放到字符数组s1中,删除其中的空格后存放到字符数组s2中,再输出s2的内容。
提示:由于输入的字符串中可以含有空格,只能用gets。对s1从头到尾扫描,注意只扫描到结束符,对于s1中每个检查到的字符,如果不是空格则复制到s2中,否则放过去继续查看下一个符号。处理完后需要为s2加上结束符。

我做的:
#include <stdio.h>
#define max 30
main()
{char s1[max],s2[max];
int i=0,j,k=-1;
gets(s1);
while(s1[k+1]!='\0')
{for(j=k+1;s1[j]!='\0';j++)
{if(s1[j]!=' ') k=j;break;}
s2[i]=s1[k];
i++;
}
s2[i+1]='\0';
puts(s2);
getch();
}

最后输入不空格的倒是可以输出~~~输入带空格的就直接给关了

#include <stdio.h>
#include <conio.h>

#define max 30
void main()
{
char s1[max] = {0}, s2[max] = {0};
int i=0,j,k=0;
gets(s1);
while(s1[k]!='\0')
{
for(j=k;s1[j]!='\0';j++)
{
if(s1[j]!=' ')
{
s2[i]=s1[k];
i++;
}
break;
}

k++;
}
s2[i+1]='\0';
puts(s2);
getch();
}

算法设计有问题
数组开始最好初始化下,你代码中未对字符串做结束处理。