C中的"坏"功能是什么,它们的"好"选择是什么?
为什么坏的不好,是什么让好的更好?
我知道,例如,它gets()是"坏的",因为它没有任何形式的边界检查.什么是更好的选择?gets()?
我听说gets()很糟糕,但我不记得为什么.谁知道?什么是最好的选择?
还有更多吗?
当我使用gets函数时,gcc给了我一个警告:
warning:the `gets' function is dangerous and should not be used.
Run Code Online (Sandbox Code Playgroud)
为什么获取和放置功能危险?
这是我程序的示例代码,其中我要添加两个字符串类型整数(ex: "23568" and "23674").所以,我正在尝试单一char添加.
char first ='2';
char second ='1';
Run Code Online (Sandbox Code Playgroud)
我这样试试..
i=((int)first)+((int)second);
printf("%d",i);
Run Code Online (Sandbox Code Playgroud)
我得到输出99,因为,它正在添加两者的ASCII值.有人请建议我,在C中添加char类型号的方法应该是什么.
我有这门课:
template<typename T> class Parser
{
public:
Parser() : count(0) {}
virtual void parse(const string&);
void get_token(void);
private:
T result;
char token;
string expression;
int count;
};
Run Code Online (Sandbox Code Playgroud)
现在这个类不是通用的,如果result有人说,a double,我会用这种方法来检测数字.
while((strchr("1234567890.",token))
{
/* add token to a "temp" string */
/* etc. etc. */
}
result = atof(temp.c_str());
Run Code Online (Sandbox Code Playgroud)
但既然result是通用的,我不能像使用任何方法atof和atoi等.
我该怎么办?