写一个只使用bit的函数bitwise_swap的定义 明智的赋值运算符交换两个字符串的值。
我尝试迭代每个char,转换为int并交换 使用
a ^= b;
b ^= a;
a ^= b;
一旦我获得了char int值,但它似乎没有用。
提前感谢您的帮助
答案 0 :(得分:4)
听起来你尝试过这样的事情,应该可以正常工作。
void bitwise_swap(char * restrict lhs, char * restrict rhs, size_t length) {
size_t i;
for (i=0; i<length; ++i) {
lhs[i] ^= rhs[i];
rhs[i] ^= lhs[i];
lhs[i] ^= rhs[i];
}
}
答案 1 :(得分:1)
#include <stdio.h>
#include <string.h>
//#include <stdbool.h>
int main()
{ int m,n,t,i;
char a[]="National University";
char b[]="India";
char c[100];
char d[100];
m=strlen(a);
n= strlen(b);
if(m>n)
{ t=m;
// strcpy(&c,&a);
for(i=0;i<n;i++)
d[i]=b[i];
for(i=0;i<m-n;i++)
d[n+i]=32;
for(i=0;i<t;i++)
{
a[i]=a[i]^d[i];
d[i]=d[i]^a[i];
a[i]=a[i]^d[i];
}
printf("a= %s \t b=%s" ,a,d);
}
else
{ t=n;
// strcpy(&d,&b);
for(i=0;i<m;i++)
c[i]=a[i];
for(i=0;i<n-m;i++)
c[m+i]=32;
for(i=0;i<t;i++)
{
c[i]=c[i]^b[i];
b[i]=b[i]^c[i];
c[i]=c[i]^b[i];
}
printf("c= %s \t d=%s" ,c,b);
}
return 0;
}
这样你就可以做到。你只需要一个循环来交换每个角色。 编辑:现在它的动态。您不需要手动指定长度,我在较短的字符串末尾附加NULL字符。查看结果:http://ideone.com/B7lsz4