gpt4 book ai didi

c - printf NULL 不带引号或非NULL,带引号的sql语句

转载 作者:行者123 更新时间:2023-12-02 05:01:25 24 4
gpt4 key购买 nike

我正在编写一个程序来打印出数千行 (MySQL) SQL 指令,以异步方式发送到数据库服务器。每组 SQL 指令都将通过 *nix 管道重定向保存到一个文件中。

我面临的问题是关于 char * 字段的 NULL 值。如果有一个

printf ( "\"%s\" ", foo_field);

和 foo_field 可能是也可能不是 NULL

MySQL 需要接收一个普通的 NULL,而不是 "NULL",所以当有一个 NULL 时,我必须去掉双引号> 值(value)。当值不为NULL时,必须用双引号括起来。

对于我已经展示的情况,我可以放置一个 if then,这样如果 NULL,参数将是 %s >\"%s\" 如果不是 NULL

但是如果我们考虑一个包含 20 个字段的 SQL 行,那么这样做就不太好了。我怎样才能做到这一点?

最佳答案

咳咳。 咳嗽...

请注意 printf( "%s") 对 NULL 指针的行为未定义

不是在任何 NULLnullnil 或空字符串周围是否会有引号的意义上,而是在某种意义上您的应用程序可能会崩溃。

这就是为什么 C/C++ 的信条是向标准函数添加安全网。该库不仅会在您的指针上执行 if - else 以避免崩溃。不,如果您想安全起见,您必须添加另一个 if - else 以免依赖实现...

关于c - printf NULL 不带引号或非NULL,带引号的sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com