日期:2014-05-16  浏览次数:20665 次

在Linux C开发中,某个数据表中字段的长度设计为n,那么在应用程序中表示这个字段的变量应该定义为多长?
打个比方:数据表中有一个status字段:状态, 设计表的时候将这个字段设为1,在应用程序中定义了一个status字符数组来存储这个状态值,即:    char status[1+1];

那么这个status字符数组的长度为什么是1+1 ? 是因为'\0'的原因吗  ? 谁能说详细一点 ? 谢谢!

------解决方案--------------------
这得看具体的应用场景了,加个'\0'估计为了后面更方便的构造sql语句,比如strcat,strcpy等;要是用sprintf构造sql语句,完全没必要char status[1+1];如果是为了内存对齐,这样写也不是很好;
------解决方案--------------------
对于数组(数据库可能不叫数据,叫varchar什么的),如果最大他要N,则数据库中指定为N长,程序中指针为N+1长,即包涵一个\0,这样有很多好处,如果不加\0,很多对于字符串操作的crt函数不能使用,比如strlen等。
------解决方案--------------------
引用:
Quote: 引用:

对于数组(数据库可能不叫数据,叫varchar什么的),如果最大他要N,则数据库中指定为N长,程序中指针为N+1长,即包涵一个\0,这样有很多好处,如果不加\0,很多对于字符串操作的crt函数不能使用,比如strlen等。
 弱弱问:不加\0,为什么很多对于字符串操作的crt函数不能使用 ? 

char sql[128] ={0};
sprintf(sql,"insert testtable values("%s",2,3)",str); 格式化输出到数组就ok了。

不加\0 是因为很多字符串函数解析的时候 是以字符串\0结束的!!