[英]String reverse without to turn the numbers in c
int main()
{
char str[1000],temp;
int i,j=0;
printf("String: ");
gets(str);
i=0;
j=strlen(str)-1;
while(i<j)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
i++;
j--;
}
printf("\n");
printf("%s",str);
return 0;
}
我想改变轮值
-输入:15 15 15 15 15 0 0 0
-出:0 0 51 51 51 51 51但我要:0 0 15 15 15 15 15
这是因为您基本上是在镜像字符串而不关心字符串的内容。 您需要代码来注意该字符串包含以空格分隔的子字符串,并在此基础上反转。
一种方法是标记字符串(例如使用strtok
)并将子字符串推入堆栈,然后从堆栈中重新创建字符串。
现在,您正在颠倒字符串中字符的顺序,但是似乎您想颠倒以空格分隔的字段的顺序。 为此,一种方法是向后遍历数组,并在每次遇到空格时打印尾部,然后将其替换为'\\0'
。 或使用以空格分隔的字段作为元素形成字符串数组,然后反转该数组的顺序(与现在相同的方法,但处理的是char
指针,而不是char
s)。
调用此函数以反转字符串。 它接受字符串,然后将每个单词压入堆栈,直到字符串为空。 然后,它开始从堆栈中弹出单词,从而反转字符串,而不是单词。
void rev(char *str){
char s[20];
int i=0;
for(; str[i]!=' ' && str[i]!='\0'; i++)
s[i]=str[i];
s[i]='\0';
if(str[i]==' ')
rev(str+i+1);
printf("%s ",s);
}
步骤:
reverseString(char* str)
将整个字符串传递给此函数。 你会得到
0 0 51 51 51 51 51
通过拆分数组中的空格来获取每个元素。 说...
arr [0] = 0; arr [1] = 0; arr [2] = 51; arr [3] = 51; ...
将单个数组传递给字符串反向函数,例如:
reverseString(arr [0]); reverseString(arr [1]); reverseString(arr [2]); ...
5连接数组,您将得到
0 0 15 15 15 15 15
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.