【问题标题】:Reversing a string without using any libraries在不使用任何库的情况下反转字符串
【发布时间】:2018-07-11 11:09:27
【问题描述】:

现在我想实现一个函数来“反转”给定的字符串。我的想法不是交换,而是想在实现的函数中声明一个新数组,以吸收处于反转状态的新字符串。 代码如下:

#include <stdio.h>
#include <stdlib.h>

void reverseString( char string[  ], int size );

int main()
{
    char string[ 14 ] = "reverse me";
    printf( "The string is: %s\n", string );
    reverseString( string, 14 );
    return 0;
}

void reverseString( char string[  ], int size )
{
    int i, j;
    char newString[ size ];
    for( ( i = ( size ) ) & ( j = 0 ); ( i >= 0 ) && ( j < ( size ) ); i-- & j ++ )
    {
        newString[ j ] = string[ i ];
    }
    printf( "\nThe string reversed: %s\n", newString );
}

任何人都可以帮助我了解反转字符串的想法吗?我是在查看我的代码时接近这个想法还是什么?!

【问题讨论】:

    标签: arrays string function pointers reverse


    【解决方案1】:

        function reverseString(string) {
            var splitedString = string.split("");
            var reverseArray = splitedString.reverse(); 
            var joinArray = reverseArray.join("");
           
            return joinArray;
        }
         
        var newString = reverseString("hello");
        
        console.log(newString);

    你期待这样的事情吗?

    【讨论】:

    • Dananjaya 我正在使用 C 我的朋友。我认为这是另一种语言! :)
    【解决方案2】:

    可以将字符串称为字符数组,其末尾带有空字符“\0”。如果字符串是“Banana”,那么实际上编译器会将其视为“Banana\0”。在程序中处理字符串时,您必须记住将空字符附加到您创建的字符串中。

    这是相同的工作代码 -

    #include <stdio.h>
    
    int main()
    {
       char string[10] = "banana";
       char reverse[10];
       int start, end, length = 0;
    
       // Calculating string length - to be used when length is not already known
    
       /*while (string[length] != '\0')
          length++;*/
    
       //in this case
    
       length=10;
    
       end = length - 1;    /*this is done because indexing in arrays and strings starts 
                              at 0, not at 1...so string[0] gives first character of the 
                              string and string[size-1] gives the last character of the 
                              string*/
    
       for (start = 0; start < length; start++) 
       {
          reverse[start] = string[end];
          end--;
       }
    
       reverse[start] = '\0';   //here we add the null character to the end of the string
    
       printf("%s\n", reverse);
    
       return 0;
    }
    

    查看您的代码,您的想法是正确的。你只需要复习一些概念,如字符串索引、字符串中的空字符等。

    同样的事情也可以使用库函数来完成。

    【讨论】:

    • Prakash Bansal 我需要知道你为什么要计算字符串的长度,当你可以通过你自己实现的索引知道大小时??
    • 我在接受用户输入时计算了字符串长度,但之后我将长度设置为 10,并忘记注释掉该长度计算部分 :-D.. 另外,我编辑了现在编码。你可以去看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2016-03-04
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多