在C编程中反转char数组

时间:2015-12-06 09:29:20

标签: c arrays char reverse

我是c语言的新手。我试图在char数组中反转元素。实际上,我几乎颠倒了,但有些东西是我做不到的。 这是代码:

06-12-2015 06:10:10 PM

代码反转了数组,但又添加了另一个字母。

3 个答案:

答案 0 :(得分:3)

正确的代码是

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'

答案 1 :(得分:1)

这里有一个有效的例子:

#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] = '\0';
  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应该说'\0'

您的代码错误

您必须注意终止- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [myButton setKeyEquivalent:@"D"]; } - (IBAction)buttonPressed:(id)sender { NSLog(@"It worked!"); }

答案 2 :(得分:0)

我希望这将是连击解决方案。

  

没有string.h头文件

 main()
{
    char str1[100], str2[100];
    int i, k, j;
    scanf("%s", &str1);
    for(i=0; str1[i] != '\0'; 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;
}