所以我有困难扭转我的绳子,它扭转一切,但一些奇怪的事情发生在中间。 void reverse(char str[]){ 焦炭温度; int i; int k=大小(str); int len=大小(str)/2; 对于(i=0;i
而言,问题在于:所以我有困难扭转我的绳子,它扭转一切,但一些奇怪的事情发生在中间。 void reverse(char str[]){ 焦炭温度; int i; int k=大小(str); int len=大小(str)/2; 对于(i=0;i,c,C,而言,问题在于: void reverse(char str[]){ char temp; int i; int k = size(str); int len = size(str)/2; for(i= 0; i<len; i++){ temp = str[k]; str[k] = str[i]; str[i] = temp; k--; if(len==k){
void reverse(char str[]){
char temp;
int i;
int k = size(str);
int len = size(str)/2;
for(i= 0; i<len; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
if(len==k){
break;
}
}//for loop
printf("%s\n", str);
}//reverse
这会使循环过早中断一个周期。问题在于:
void reverse(char str[]){
char temp;
int i;
int k = size(str);
int len = size(str)/2;
for(i= 0; i<len; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
if(len==k){
break;
}
}//for loop
printf("%s\n", str);
}//reverse
这会使循环过早中断一个周期。另一种方法是:
if(len==k){
break;
}
void反向(char*str)
{
字符温度;/*温度变量*/
int i;/*循环计数器*/
int ltc;/*环路终端计数*/
int len;/*字符串长度*/
len=strlen(str);
ltc=len>>1;
蓝--;
对于(i=0;i
这将起作用。我在出于某种原因需要反转字符串时使用这个精确的代码。len--
的原因是不交换空字节。行ltc=len>>1
是一个快速而肮脏的除以2,不使用实际的除法,而是向左移位
至于您的代码,您并不需要if语句,因为循环到达字符串的一半时就已经终止了,我的代码也是如此。另一种方法是:
if(len==k){
break;
}
void反向(char*str)
{
字符温度;/*温度变量*/
int i;/*循环计数器*/
int ltc;/*环路终端计数*/
int len;/*字符串长度*/
len=strlen(str);
ltc=len>>1;
蓝--;
对于(i=0;i
这将起作用。我在出于某种原因需要反转字符串时使用这个精确的代码。len--
的原因是不交换空字节。行ltc=len>>1
是一个快速而肮脏的除以2,不使用实际的除法,而是向左移位
至于代码,实际上不需要if语句,因为循环到达字符串的一半时就已经终止了,我的代码也是如此。这样就行了
void reverse(char *str)
{
char temp; /* Temp Variable */
int i; /* Loop Counter */
int ltc; /* Loop Terminus Count */
int len; /* String Length */
len = strlen(str);
ltc = len >> 1;
len--;
for (i = 0; i < ltc; i++)
{
temp = str[i];
str[i] = str[len - i];
str[len - i] = temp;
}
}
#包括
#包括
无效反向(char*str);
int main()
{
反向(“你好,世界!\n”);
返回0;
}
无效反向(字符*str)
{
焦炭温度;
int i=0;
int j=strlen(str)-1;
而(i
这将起作用
void reverse(char *str)
{
char temp; /* Temp Variable */
int i; /* Loop Counter */
int ltc; /* Loop Terminus Count */
int len; /* String Length */
len = strlen(str);
ltc = len >> 1;
len--;
for (i = 0; i < ltc; i++)
{
temp = str[i];
str[i] = str[len - i];
str[len - i] = temp;
}
}
#包括
#包括
无效反向(char*str);
int main()
{
反向(“你好,世界!\n”);
返回0;
}
无效反向(字符*str)
{
焦炭温度;
int i=0;
int j=strlen(str)-1;
而(i
什么函数是size()?当您单步执行代码时,调试器会告诉您什么?尝试使用字符串(如123456和12345)的一些测试用例。使用奇数和偶数长度的字符串,并考虑在任何一种情况下循环应如何进行。检查大小()函数调用给出了正确的结果。或者是否有更可靠的调用,如strlen()。乍一看,循环中temp=str[k]的第一次访问看起来不正确,如果k是字符串中的字符数,数组访问是基于零的。最后一个元素应该是k-1。是否size()
按预期工作?如果我有str=“adam”
,您的size()
函数是否返回3
?似乎您正在使用size()
的返回值索引到str
。size()是什么函数?当您单步执行代码时,调试器会告诉您什么?尝试使用字符串(如123456和12345)的一些测试用例。使用奇数和偶数长度的字符串,并考虑在任何情况下循环应如何进行。检查size()函数调用是否给出了正确的结果。或者是否有更可靠的调用,如strlen()。乍一看,如果k是字符串中的字符数,并且数组访问是以零为基础的,那么循环中temp=str[k]的第一次访问看起来不正确。最后一个元素应该是k-1。size()
是否按预期工作?如果我有str=“adam”
,您的size()是否
函数返回3
?似乎您正在使用size()
的返回值索引到str
。