我不知道为什么会出错,我想反向打印数组,例如,如果输入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;
}
答案 0 :(得分:1)
不幸的是,此代码中有很多错误。例如:
在for循环中,您必须编写&mystring [i]来逐个字符地输入字符串字符。对于输入字符串,您还应该简单地使用%s,因为它会自动为您提供转义序列字符,可以进一步用于计算输入字符串的长度并对其执行各种操作。
在传递数组时,应仅将其名称作为参数传递。
通过编写S=25
来定义mystring[S]
所创建的数组的索引为0-24,而您正尝试访问越界数组元素,这将产生缓冲区溢出错误。
"hello"
仅会在数组中占据前5个字符的位置,因此要打印其反向字符,您只需使用'\ 0'找到其终点,然后从那里打印反向字符串。
要查找输入的字符串的长度,可以使用上述方法,也可以仅包含字符串.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()
}
}
}
这不是您想要的,但这只是一个开始。