题目:
输入一个字符串,调用函数进行反转字符串,并去除其中的空格
思路:
获取字符串后,调用strlen();来获取输入字符串长度(注意这个长度不包含字符串末尾的’\0’),turnString()函数中先把字符串进行反转,然后逐个字符判断,输出到另一个字符串。再将令一个字符串的首地址返回。
注意:
为什么代码中ret[ ]数组要定义为全局变量,因为如果在函数体中定义ret[ ],在函数结束后,ret的内存空间也会被回收,会产生段错误。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char ret[16]={'\0'};
char *turnString(char str[],int n)
{
int i=0;
int j=0;
int k=0;
j=n-1;
printf("j=%d\n",j);
for(i=0;i<j;i++)
{
k=str[i];
str[i]=str[j];
str[j--]=k;
}
i=0;
j=0;
for(i=0;i<n;i++)
{
if(str[i]!=' '&&str[i]!='\0')
{
ret[j++]=str[i];
}
}
return &ret[0];
}
int main()
{
char a[16];
char *p;
int len;
puts("please input:");
gets(a);
printf("you input:%s\n",a);
len=strlen(a);
p=turnString(a,len);
for(int i=0;i<len;i++)
{
printf("%c",*p++);
}
return 0;
}
运行结果如下: