我尝试在字符串上运行反向但它对我不起作用。
例如我试过: -
在str
中运行到字母Z,并将字母Z
和A
之间的所有字母存储在新字符串str1
上。
我的代码:
int main()
{
char str[8] = "RREADFZ";
char str1[8];
int i,k;
for(i =0; i<8; i++)
{
if(str[i] == 'Z')
{
while(str1[k] != 'A')
{
str1[k] = str[i];
i--;
k--;
}
}
}
printf("%s\n",str1);
}
答案 0 :(得分:2)
您需要将k
初始化为0
并在while
循环中将其递增; k++
。最后,您需要将\0
存储在数组str1
中。
答案 1 :(得分:0)
#include <stdio.h>
#include <string.h>
int main(){
char str[8] = "RREADFZ";
char str1[8] = {0};
int i, k, aPos, zPos, len = strlen(str);
aPos = zPos = -1;
for(i =0; i<len; i++){
if(str[i] == 'A'){
aPos = i;
} else if(str[i] == 'Z'){
zPos = i;
break;
}
}
if(aPos != -1 && zPos != -1){
for(k=0, i=zPos-1;i>aPos;--i,++k){
str1[k]=str[i];
}
}
printf("%s\n", str1);//FD
return 0;
}
更新(定义功能)
#include <stdio.h>
#include <string.h>
void between(char out[], const char in[], char front, char back){
int i, k, frontPos, backPos, len = strlen(in);
frontPos = backPos = -1;
for(i =0; i<len; i++){
if(in[i] == front){
frontPos = i;
} else if(in[i] == back){
backPos = i;
break;
}
}
k = 0;
if(frontPos != -1 && backPos != -1){
for(i=backPos-1;i>frontPos;--i,++k){
out[k]=in[i];
}
}
out[k]='\0';
}
int main(){
char str[] = "RREADFZ";
char exp[] = "2-3 +5 * 7";
char cutout[16];
between(cutout, str, 'A', 'Z');
printf("str:%s\n", cutout);//FD
between(cutout, exp, '+', '*');
printf("exp:%s\n", cutout);// 5
return 0;
}