#include<stdio.h>
#include<string.h>
char[] cnn(char ch[]){
int i,j,k,t,flag=0;
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==' '&&flag==0)
{
flag = 1;
j=i;
}
else
{
if(flag==1&&ch[i]!=' ')
{
k=i;
for(t=j;t<strlen(ch)-k+j;t++)
{
ch[t]=ch[i];
i++;
}
ch[t]='\0';
i=j;
flag=0;
}
else
{
if(i==strlen(ch)-1)
{
ch[j]='\0';
}
}
}
}
return ch;
}
int main()
{
return 0;
}
大哥 还是有问题 纠结中... ...
刚套用 空格后的字符串就被截掉了
http://hi.baidu.com/v_xxy/blog/item/3766aef4b106b8fa7709d7e2.html
你程序我刚看了
问题出现在
scanf("%s",&nl);这个上 这个是读取你输入的字符串 直到遇到 回车 或者空格 为止的
所以你输入 asdf sdfsd saf 这是其实 nl只获得了 asdf 而后面的就没了
所以你之后调用我写的那个函数 nll=cnn(nl); 传进去的只是 asdf 后面的自然就没有了
gets()?
我是想写一个独立函数 然后在主函数中调用
追答哦
#include
#include
void f()
{ char str[1000];
int i, j=-1,n;
gets(str);
n=strlen(str);
for(i=0;i<n;i++)
if(str[i]!=' ')
str[++j]=str[i];
str[j+1]='\0';
puts(str);
}
int main()
{ f();
return 0;
}
老大 你能看看我的那段代码吗 其实我是需要一个返回字符串
追答知道你的意思了
你是想打一个一个进去 然或再判断 就好 推箱子一样 一个一个的推进去吧
这种算法很容易出错的,但可以练练逻辑
其实就是一个箱子操作 我写一个函数 专门接收字符串 负责把字符串中的空格全都去掉 再把整理好后的字符串返回出去
追答//我试了你的程序 你中间只隔一个没事 要是隔很多就会 帮你改了一点点 就出错在结尾 结得不好
#include
#include
void cnn()
{ char ch[1000];
gets(ch);
int i,j,k,t,flag=0;
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==' '&&flag==0)
{
flag = 1;
j=i;
}
else
{
if(flag==1&&ch[i]!=' ')
{
k=i;
for(t=j;t<strlen(ch)-k+j;t++)
{
ch[t]=ch[i];
i++;
}
ch[t]='\0';
i=j;
flag=0;
}
}
}
ch[i]='\0';
puts(ch);
}
int main()
{
cnn();
return 0;
}