[英]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*和char或int :
在 :
if (ne != ' ')
其中ne是一個字符*
在
nl = ne;
其中nl是一個int而ne是一個char*
在
nb = nl + 1; ne = nl + 1;
其中nb和ne是char*和nl是int
還 :
無效主()
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.