我正在尝试编写一个代码,在其中输入一个字符串并将其反转。即:“诺基亚”到“aikon”。
我已经以某种方式拥有它,但现在我想使用函数 strlen()
来获取原始字符串的长度并根据该长度创建新的字符串。
这是代码:
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);
}
然而,我从
printf()
得到的只是一个“?”。我究竟做错了什么? 最佳答案
试试这个简单的反向函数:
/* reverse: reverse string s in place */
void reverse(char s[])
{
int c, i, j;
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
要将其集成到您的代码中:
void main(void)
{
char palavra[10];
int c, i, j;
/* read the string */
printf("Introduza uma string: \n");
scanf("%[^\n]", palavra);
/* null-terminate the string */
palavra[strlen(palavra)] = '\0';
/* reverse the string */
for (i = 0, j = strlen(palavra)-1; i < j; i++, j--) {
c = palavra[i];
palavra[i] = palavra[j];
palavra[j] = c;
}
printf("\nString invertida: %s", palavra);
}