|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 LiJay 于 2020-11-10 21:24 编辑
#include<stdio.h>
int main()
{
char a[100];
while (scanf_s("%s",&a[100]) != EOF)
{
int i;
char s = a[0];
for (i = 1; a[i] != '\0'; i++)
{
if (s < a[i])
{
s = a[i];
}
}
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] != s)
{
printf("%c", a[i]);
}
else {
printf("%c(max)", a[i]);
}
}
printf("\n");
}
return 0;
}
这是全部代码。问题出在scanf_s("%s",&a[100])上,如果这样的话随便输入一串字符串总会报错,
然而将 scanf_s("%s",&a[100]) 改成 scanf_s("%s",a,100)却不会报错能够正常运行
这是为什么呢?scanf_s("%s",a,100)的含义是什么呢?
(目前我只知道scanf_s("%d"),&a),scanf_s("%s"),&a),scanf_s("%c"),&a)。。。这样的("% ",& )是将前面的数据类型赋值给后面的变量)
想知道scanf_s("%s",a,100)里为什么不用&符号并且一个%s后面却有两个量; 如果单独a的话提示就是涉及指针,加个常量100代表什么呢?
本帖最后由 jackz007 于 2020-11-10 22:34 编辑
- while (scanf_s("%s",&a[100]) != EOF)
复制代码
改为:
- while (scanf_s("%s" , a , 100) != EOF)
复制代码
试试
a 本身就是存储地址,代表字符数组 a[] 的起始地址,等效于 & a[0]。
|
|