Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所以我有困难扭转我的绳子,它扭转一切,但一些奇怪的事情发生在中间。 void reverse(char str[]){ 焦炭温度; int i; int k=大小(str); int len=大小(str)/2; 对于(i=0;i_C - Fatal编程技术网

所以我有困难扭转我的绳子,它扭转一切,但一些奇怪的事情发生在中间。 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