//我正在使用Visual Studio,但运行时检查失败#3-T?
// str =“你好吗”
// reverse_str =“ ouy age 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);
}
答案 0 :(得分:1)
//我正在使用Visual Studio,但运行时检查失败#3-T?
您在correct_str
中多次混淆了 char * 和 char 或 int :
在:
if (ne != ' ')
其中 ne 是 char *
在
nl = ne;
其中 nl 是 int ,而 ne 是 char *
在
nb = nl + 1; ne = nl + 1;
其中 nb 和 ne 是 char * ,而 nl 和 int
也:
void main()
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;