簡體   English   中英

我想在不使用字符串函數的情況下反轉 c 中的字符串並更正字符串?

[英]I want to reverse a string in c with out using string functions and also to correct a string?

// 正在使用 Visual Studio,但運行時檢查失敗 #3 - T?

// str = "你好,你好嗎"

// reverse_str = "ouy era woh olleH"

//correct_str = "你是怎么嗨"

#include<stdio.h>

#include<string.h>

void reverse_str(char *str)

{

    char *begin_str, *end_str, temp;
    int l, i;
    l = strlen(str);

    begin_str = str;
    end_str = str;

    for (i = 0; i < l - 1; i++)
        end_str++;

    for (i = 0; i < l / 2; i++)
    {
        temp = *end_str;
        *end_str = *begin_str;
        *begin_str = temp;

        begin_str++;
        end_str--;
    }

}

void correct_str(char *str)

{

    char *nb, *ne, temp;
    int nl, i, l;

    l = strlen(str);

    nb = str;
    ne = str;
    while (*str)
    {

        for (i = 0; i < l - 1; i++)
        {
            if (ne != ' ')
                ne++;
            else
            {
                ne = ne - 1;
                nl = ne;

                for (i = 0; i < nl / 2; i++)
                {
                    temp = *ne;
                    *ne = *nb;
                    *nb = temp;

                    nb++;
                    ne--;
                }
            }
        }
        nb = nl + 1;
        ne = nl + 1;
    }
}

void main()

{

    char str[100] = "hello world How are you";
    reverse_str(str);
    printf("%s\n", str);
    correct_str(str);
    printf("%s\n", str);


}

// 正在使用 Visual Studio,但運行時檢查失敗 #3 - T?

您多次混淆了correct_str char*charint

在 :

 if (ne != ' ')

其中ne是一個字符*

 nl = ne;

其中nl是一個intne是一個char*

 nb = nl + 1; ne = nl + 1;

其中nbnechar*nlint

還 :

無效主()

main必須返回一個int

我強烈建議您考慮編譯器產生的警告


標題說“不使用字符串函數”,但在reverse_str你使用strlen ,你需要替換

l = strlen(str); begin_str = str; end_str = str; for (i = 0; i < l - 1; i++) end_str++;

通過例如

begin_str = str;
end_str = str;

while (*end_str != 0)
  end_str++;

l = end_str - begin_str;
if (l != 0)
  end_str -= 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM