在C编程中反转char数组
Reversing char array in C programming
我是 c 编程语言的新手。我正在尝试反转 char 数组中的元素。其实,我差点反了,但有些事情我做不到。
这是代码:
void q2_reverseTheArray(char word[100]){
int lentgh=sizeof(word);
int j;
for(j=length+1; j>=0; j--){
printf("%c", word[j]);
}
代码反转了数组,但添加了另一个字母。
正确的代码是
for(j=length-1; j>=0; j--){
printf("%c", word[j]);
这是因为字符串的元素索引从 0
到 length-1
。例如,
word == "Hello"
length == 5
word[0] == 'H'
word[1] == 'e'
word[2] == 'l'
word[3] == 'l'
word[4] == 'o'
这里有一个工作示例:
#include <stdio.h> // printf
#include <stdlib.h> // malloc, free
#include <string.h> // strlen
int main() {
char* s = "hello";
size_t l = strlen(s);
char* r = (char*)malloc((l + 1) * sizeof(char));
r[l] = '[=10=]';
int i;
for(i = 0; i < l; i++) {
r[i] = s[l - 1 - i];
}
printf("normal: %s\n", s);
printf("reverse: %s\n", r);
free(r);
}
您的代码在 length + 1
中是错误的,应该是 length - 1
。
而且你要注意终止符'[=13=]'
。
我希望这是更好的解决方案。
Without string.h header file
main()
{
char str1[100], str2[100];
int i, k, j;
scanf("%s", &str1);
for(i=0; str1[i] != '[=10=]'; i++ );
j=i-1;
for(k=0; k<=i; k++)
{
str2[k]=str1[j];
j--;
}
for(k=0; k<i; k++)
printf("%c", str2[k]);
return 0;
}
我是 c 编程语言的新手。我正在尝试反转 char 数组中的元素。其实,我差点反了,但有些事情我做不到。 这是代码:
void q2_reverseTheArray(char word[100]){
int lentgh=sizeof(word);
int j;
for(j=length+1; j>=0; j--){
printf("%c", word[j]);
}
代码反转了数组,但添加了另一个字母。
正确的代码是
for(j=length-1; j>=0; j--){
printf("%c", word[j]);
这是因为字符串的元素索引从 0
到 length-1
。例如,
word == "Hello"
length == 5
word[0] == 'H'
word[1] == 'e'
word[2] == 'l'
word[3] == 'l'
word[4] == 'o'
这里有一个工作示例:
#include <stdio.h> // printf
#include <stdlib.h> // malloc, free
#include <string.h> // strlen
int main() {
char* s = "hello";
size_t l = strlen(s);
char* r = (char*)malloc((l + 1) * sizeof(char));
r[l] = '[=10=]';
int i;
for(i = 0; i < l; i++) {
r[i] = s[l - 1 - i];
}
printf("normal: %s\n", s);
printf("reverse: %s\n", r);
free(r);
}
您的代码在 length + 1
中是错误的,应该是 length - 1
。
而且你要注意终止符'[=13=]'
。
我希望这是更好的解决方案。
Without string.h header file
main()
{
char str1[100], str2[100];
int i, k, j;
scanf("%s", &str1);
for(i=0; str1[i] != '[=10=]'; i++ );
j=i-1;
for(k=0; k<=i; k++)
{
str2[k]=str1[j];
j--;
}
for(k=0; k<i; k++)
printf("%c", str2[k]);
return 0;
}