在C中反转字符串不起作用

时间:2018-03-07 05:43:50

标签: c

我一直在研究一个程序来反转用户的字符串。 我有另一个程序,它做了非常相似的事情,没有用户输入。然而,前者并不想将第二个字符串的值设置为第一个。任何和所有的帮助表示赞赏!

我也为我的格式道歉,这是我第一次使用这个论坛

代码:

#include <stdio.h>

char original[8], new[8];
int i = 0, t = 8;

void main(){

    printf("Enter your string here: ");
    scanf("%s", &original);

    for(i = 0; i <= 8; i++, t--){
        printf("%c\n", original[i]);
        new[t] = original[i];
    }

    printf("Your new string is %s\n", new);
}

2 个答案:

答案 0 :(得分:0)

以下代码应该工作属性

#include<stdio.h>
#include<string.h>
void main()
{
  char str[50],temp;
  int i,j,len;
  puts("enter a string");
  gets(str);
  len=strlen(str);
  /* reverse the string*/
  for(i=0,j=len-1; i<j; i++,j--)
  {
     temp = str[i];
     str[i] = str[j];
     str[j] = temp;
  }
  printf("Reverse string is %s",str);
}

这里我只使用了一个数组并反转了它使用较少内存且易于理解的字符串。 希望这有效。尊敬。

答案 1 :(得分:-1)

您的代码存在缺陷。你正在迭代的数组大小为8,而在C中它从0开始,所以当你提到数组的大小为8时,它意味着下标7是数组的结尾。 在您的情况下,您实际上必须输入长度为8且不小于该值的字符串。 因为当您打印数组时,新的将始终从&amp; new [0]中获取它,这是基本地址,它没有任何内容。但是假设您的输入字符串恰好是8个字节,则是经过纠正的代码。

    #include <stdio.h>  
    char original[8], new[8];
    int i = 0, t = 7;
    void main(){
        printf("Enter your string here: ");
        scanf("%s", &original);
        for(i = 0; i < 8; i++, t--){
        printf("%c\n", original[i]);
        new[t] = original[i];
        }
        printf("Your new string is %s\n", new);
    }