我尝试反转我的字符串并打印出结果。
#include <stdio.h>
#include <string.h>
void reverse(char *string, char *revstr)
{
int length, i, j;
length = strlen(string);
for (i=length, j=0; i >= 0; i--, j++) {
revstr[j] = string[i];
}
}
int void()
{
char string[] = "reverse!";
int length = strlen(string);
char revstr[length];
int i;
reverse(string, revstr);
printf("%s", revstr); //nothing
for (i=0; i<=strlen(string); i++) {
printf("%c", revstr[i]); //It's work
}
printf("\n");
return 0;
}
答案 0 :(得分:8)
从C定义中,字符串是一个连续的字符序列 终止并包括第一个空字符。您不应该反转字符串的尾随空终止符。
变化:
for (i=length, j=0; i >= 0; i--, j++)
到这个
for (i = length - 1, j=0; i >= 0; i--, j++) {
并在reverse
函数的末尾手动添加尾随空终止符:
revstr[length] = '\0';
您还应为空终止符保留足够的空间:
变化:
char revstr[length];
到此:
char revstr[length + 1];