- 主题:请教,这段代码哪里出了问题?
输入一个字符串,如果有o,变成0,如果有Z,变成2输出。
运行发现,无论什么输入,输出总是一串2.
#include<cstdio>
#include<cstring>
#include <iostream>
#include <string.h>
using namespace std;
char a[101];
int n;
int main()
{
gets(a);
n=strlen(a);
for(int i=0;i<n;i++)
{
if(a[i]='o')
a[i]='0';
if(a[i]='Z')
a[i]='2';
}
puts(a) ;
return 0;
}
--
FROM 219.236.128.*
==。。。。
【 在 pndxy 的大作中提到: 】
: 输入一个字符串,如果有o,变成0,如果有Z,变成2输出。
: 运行发现,无论什么输入,输出总是一串2.
: #include<cstdio>
: #include<cstring>
: #include <iostream>
: #include <string.h>
: u
: ..................
发自「今日水木 on M2007J17C」
--
FROM 222.129.55.*
改了。
输出成了原封不变输入。
【 在 GoGoRoger 的大作中提到: 】
: ==。。。。
: 发自「今日水木 on M2007J17C」
--
FROM 219.236.128.*
你这是没学过 C++ 吧,无聊地帮你修正了一下程序:
#include <cstdio>
#include <cstring>
using namespace std;
char a[ 101 ];
int n;
int main()
{
gets( a );
n = strlen( a );
for ( int i = 0; i < n; i++ ) {
if ( a[ i ] == 'o' )
a[ i ] = '0';
if ( a[ i ] == 'Z' )
a[ i ] = '2';
}
puts( a );
return 0;
}
再输入 o1Z 试试!
另外,gets 是标准 C 库函数吧? VS 2019 怎么把它给去掉了
【 在 pndxy (pndxy) 的大作中提到: 】
: 输入一个字符串,如果有o,变成0,如果有Z,变成2输出。
: 运行发现,无论什么输入,输出总是一串2.
: #include<cstdio>
: ...................
--
FROM 103.40.221.*
你难道把所有的=都改成==了?
【 在 pndxy (pndxy) 的大作中提到: 】
: 标 题: Re: 请教,这段代码哪里出了问题?
: 发信站: 水木社区 (Sun Aug 22 16:23:13 2021), 站内
:
: 改了。
: 输出成了原封不变输入。
:
: 【 在 GoGoRoger 的大作中提到: 】
: : ==。。。。
: : 发自「今日水木 on M2007J17C」
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 219.236.128.*]
--
FROM 76.126.252.*
gets 没有长度限制参数容易缓冲区溢出漏洞,所以默认警告禁用了。
类似有潜在安全隐患的函数很多都警告,不过有些矫枉过正了。
【 在 easior 的大作中提到: 】
: 你这是没学过 C++ 吧,无聊地帮你修正了一下程序:
: #include <cstdio>
: #include <cstring>
: ...................
--
修改:milksea FROM 114.249.196.*
FROM 114.249.196.*
多谢,多谢。
懂了!!!
【 在 easior 的大作中提到: 】
: 你这是没学过 C++ 吧,无聊地帮你修正了一下程序:
: #include <cstdio>
: #include <cstring>
: ...................
--
修改:pndxy FROM 219.236.128.*
FROM 219.236.128.*
懂了,懂了,多谢!
【 在 here080 的大作中提到: 】
: 你难道把所有的=都改成==了?
:
--
FROM 219.236.128.*
微软给处理 C 串的库函数搞了好多 _s 版,
但一般不会从 msvcrt 库去掉,而是会增加一个宏选项,
看起来 gets 被直接干掉了
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: gets 没有长度限制参数容易缓冲区溢出漏洞,所以默认警告禁用了。
: 类似有潜在安全隐患的函数很多都警告,不过有些矫枉过正了。
--
FROM 103.40.221.*
查了一下,c11 标准把 gets 删了,所以微软没问题。gets 确实不安全得过分了。
【 在 easior 的大作中提到: 】
: 微软给处理 C 串的库函数搞了好多 _s 版,
: 但一般不会从 msvcrt 库去掉,而是会增加一个宏选项,
: 看起来 gets 被直接干掉了
: ...................
--
FROM 114.249.196.*