我想在c中反向打印一个字符串数组,但是给我一个错误

时间:2020-04-29 08:53:34

标签: c

我不知道为什么会出错,我想反向打印数组,例如,如果输入hello,它将打印olleh

#include <stdio.h>
#define S 25
void reverse(char a[S]){
for(int i=S-1;i>=0;i--){
        printf("the inverse is : %c\n",a[S]);
    }
}

int main()
{
char mystring[S];
printf("input your string:\n");
for(int i=0;i<S;i++){
scanf("%c",&mystring[S]);}
reverse(mystring[S]);


return 0;
}

2 个答案:

答案 0 :(得分:1)

不幸的是,此代码中有很多错误。例如:

  1. 在for循环中,您必须编写&mystring [i]来逐个字符地输入字符串字符。对于输入字符串,您还应该简单地使用%s,因为它会自动为您提供转义序列字符,可以进一步用于计算输入字符串的长度并对其执行各种操作。

  2. 在传递数组时,应仅将其名称作为参数传递。

  3. 通过编写S=25来定义mystring[S]所创建的数组的索引为0-24,而您正尝试访问越界数组元素,这将产生缓冲区溢出错误。

  4. "hello"仅会在数组中占据前5个字符的位置,因此要打印其反向字符,您只需使用'\ 0'找到其终点,然后从那里打印反向字符串。

  5. 要查找输入的字符串的长度,可以使用上述方法,也可以仅包含字符串.h头文件,并使用具有正确语法的内置库函数strlen

答案 1 :(得分:0)

您想要这样的东西:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)

    if #available(iOS 13.0, *) {
      if self.traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
        _ = messageInputAccessoryView.resignFirstResponder()
      }
    }
  }

这不是您想要的,但这只是一个开始。