我试着编写一个代码,我输入一个字符串,然后我把它反转.即:"诺基亚"到"aikon".
我已经在某种程度上拥有它,但现在我想使用函数strlen来获取原始String的长度并根据该长度创建新的.
我从printf得到的只是一个"?".
这是代码:
void main(void)
{
char palavra[10];
char palavra2[10];
int i;
int k;
printf("Introduza uma string: \n");
scanf("%[^\n]", palavra);
for( i = 0, k = strlen(palavra) - 1 ; i <= k; i++, k--)
{
palavra2[k] = palavra[i];
}
printf("\nString invertida: %s", palavra2);
}
Run Code Online (Sandbox Code Playgroud)
你的循环索引以相反的方式运行,所以它们在中间相遇,循环停止时i <= k:字符串的一半没有反转.只是测试i反对strlen(palavra)
另外,你必须null终止你的字符串:
int len=strlen(palavra);
for( i = 0, k = len - 1 ; i < len; i++, k--)
{
palavra2[k] = palavra[i];
}
palavra2[len]='\0';
Run Code Online (Sandbox Code Playgroud)
(并且您最好存储值,strlen(palavra)因此您只需计算一次)