参数c语言比较字符串大小解析失败 是什么意思

这个在visual stdio2015里面为什么编译通不过,没有为格式字符串传递足够的参数是什么意思【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:587,997贴子:
这个在visual stdio2015里面为什么编译通不过,收藏
这个在visual stdio2015里面为什么编译通不过,没有为格式字符串传递足够的参数是什么意思?
scnaf_s不是scanf,需要三个参数。
登录百度帐号在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
localhost:8080/Root/main.jsp?json=XXX
为啥这样传会报错呢
错误消息如下
net.sf.json.JSONException: Found starting '[' but missing ']' at the end. at character 0 of null
net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
net.sf.json.util.JSONTokener.(JSONTokener.java:82)
net.sf.json.JSONObject._fromString(JSONObject.java:1201)
net.sf.json.JSONObject.fromObject(JSONObject.java:165)
net.sf.json.JSONObject.fromObject(JSONObject.java:134)
com.baidu.test.mysql.test.doGet(test.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
当然可以啦,不过你需要注意:
JSON字符串需要用urlencoding编码
对绝大多数HTTP client而言,URL长度都有上限,所以不能传太大的JSON,一般而言几K应该没问题,但是再长点就不好说了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
jsonencode后还需要urlcode,或者直接base64加解密啦。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以是可以,当然没问题,可是一般很少这样做。你这个错误看起来是JSON的格式不对而造成的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我已经解决了,最终发现的问题是在url拼接的时候json部分最开始的那个字符是"{",而不是正常json的"[",最后一个字符情况也一样。参数如下:
http://localhost:8080/ROOT/test?test={"Date":"ds","Lon":"0.0","Lat":"1.0","Voice":[{"filename":"IMG_209.jpg"}],"Picture":[{"filename":"IMG_209.jpg"}],"Video":[{"filename":"IMG_209.jpg"}]}
里面还有几个带[]的值,但是没有影响到生成最外层的jsonobject,我想是因为json嵌套的原因。
还有在服务端接收到json的字符之后,还需要对转义字符做处理,用java替换字符的函数(replaceAll)将双引号替换为反斜杠加双引号。
代码这样写的:
String temp = request.getParameter("jsonString");
temp = temp.replaceAll("\"","\\"");
我这样做确实将jsonString转换成了JSONObject。
我现在知识储备和开发经验还不多,上面的回答是根据我现有的理解,如果回答有什么问题,欢迎诸位前辈批评指正~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
太长的字符串可以放进消息体里面用post传
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个字符串是怎么写的:8080/ROOT/test?test={"Date":"ds","Lon":"0.0","Lat":"1.0","Voice":[{"filename":"IMG101209.jpg"}],"Picture":[{"filename":"IMG101209.jpg"}],"Video":[{"filename":"IMG101209.jpg"}]}
NSString *str = @"http://localhost:8080/ROOT/test?test={"Date":"ds","Lon":"0.0","Lat":"1.0","Voice":[{"filename":"IMG101209.jpg"}],"Picture":[{"filename":"IMG101209.jpg"}],"Video":[{"filename":"IMG101209.jpg"}]}" 吗?这好像不正确吧!
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。MYSQL连接字符串参数解析(解释) - YellowCool - 博客园
随笔 - 51, 文章 - 0, 评论 - 5, 引用 - 0
被迫转到MySQL数据库,发现读取数据库时,tinyint类型的值都被转化为boolean了,这样大于1的值都丢失,变成true了。查阅资料MySQL中无Boolean类型,都是存储为tinyint了,这也无妨,但是读回时不应该都变成boolean啊。网络检索没有解决方案,准备向官方报告bug,细想官方不应该有这样低级错误,先下载Connector/NET源码研究一下,发现其中有TreatTinyAsBoolean这个属性,检索百度无结果,google有几条英文的,看来大家都没有注意到这点,或者说很少用.Net玩 MySQL的。这样将数据库连接字符串变为这样形式就一切正常了:Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=utf8;TreatTinyAsBoolean=false;顺便把源码中涉及的所有属性都列出来:Server,host, data source, datasource, address, addr, network address: 数据库位置(以上任何关键字均可)Database,initial catalog:数据库名Port:&&& &&& socket 端口,默认 3306ConnectionProtocol,protocol:&&& 连接协议,默认 SocketsPipeName,pipe:&&& &&& 连接管道,默认 MYSQLUseCompression,compress:&&& 连接是否压缩,默认 falseAllowBatch:&&& 是否允许一次执行多条SQL语句,默认 trueLogging:&&& 是否启用日志,默认 falseSharedMemoryName:内存共享的名称,默认 MYSQLUseOldSyntax,old syntax, oldsyntax:是否兼容旧版的语法,默认 falseConnectionTimeout,connection timeout:连接超时等待时间,默认15sDefaultCommandTimeout,command timeout:MySqlCommand 超时时间,默认 30sUserID, uid, username, user name, user:数据库登录帐号Password,pwd:&&& 登录密码PersistSecurityInfo:是否保持敏感信息,默认 falseEncrypt:已经用 SSL 替代了,默认 falseCertificateFile:证书文件(.pfx)格式CertificatePassword:证书的密码CertificateStoreLocation:证书的存储位置CertificateThumbprint:证书指纹AllowZeroDateTime:日期时间能否为零,默认 falseConvertZeroDateTime:为零的日期时间是否转化为 DateTime.MinValue,默认 falseUseUsageAdvisor, usage advisor:是否启用助手,会影响数据库性能,默认 falseProcedureCacheSize,procedure cache, procedurecache:同一时间能缓存几条存储过程,0为禁止,默认 25UsePerformanceMonitor,userperfmon, perfmon:是否启用性能监视,默认 falseIgnorePrepare:&&& 是否忽略 Prepare() 调用,默认 trueUseProcedureBodies,procedure bodies:是否检查存储过程体、参数的有效性,默认 trueAutoEnlist:&&& 是否自动使用活动的连接,默认 trueRespectBinaryFlags:是否响应列上元数据的二进制标志,默认 trueTreatTinyAsBoolean:是否将 TINYINT(1) 列视为布尔型,默认 trueAllowUserVariables:是否允许 SQL 中出现用户变量,默认 falseInteractiveSession,interactive:会话是否允许交互,默认 falseFunctionsReturnString:所有服务器函数是否按返回字符串处理,默认 falseUseAffectedRows:是否用受影响的行数替代查找到的行数来返回数据,默认 falseOldGuids:&&& 是否将 binary(16) 列作为 Guids,默认 falseKeepalive:&&& 保持 TCP 连接的秒数,默认0,不保持。ConnectionLifeTime:连接被销毁前在连接池中保持的最少时间(秒)。默认 0Pooling:&&& 是否使用线程池,默认 trueMinimumPoolSize, min pool size:线程池中允许的最少线程数,默认 0MaximumPoolSize,max pool size:线程池中允许的最多线程数,默认 100ConnectionReset:连接过期后是否自动复位,默认 falseCharacterSet, charset:向服务器请求连接所使用的字符集,默认:无TreatBlobsAsUTF8:binary blobs 是否按 utf8 对待,默认 falseBlobAsUTF8IncludePattern:列的匹配模式,一旦匹配将按 utf8 处理,默认:无SslMode:&&& 是否启用 SSL 连接模式,默认:MySqlSslMode.None
文章出处:在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
大家都知道,第一个参数一般是一个字符串,内容为将要执行的那个函数的名字,比如:
variable = setTimeout("func",interval);
具体的问题是这样的:
函数moveElement有四个参数分别为, elementID,final_x,final_y,
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";//
//这些参数的引号双引号为什么非得这样写!!! 我们知道定义好的变量用“+” 连接字符串,字符串用双引号等规则.
movement = setTimeout(repeat,interval);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这种东西我实在是想不通怎么会成为一个问题的。我来给你做一个解析吧,虽然这种问题幼稚。嗯,这里吐槽一下,想不通为啥理解不了,要学会分析问题。正题开始
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";//
//这些参数的引号双引号为什么非得这样写!!! 我们知道定义好的变量用“+” 连接字符串,字符串用双引号等规则.
movement = setTimeout(repeat,interval);
// 以上是你的问题
var elementID = 'dom_id';
var final_x = 100;
var final_y = 200;
var interval = 10;
// 对于这个字符串连接肯定是没问题吧?
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
// 解析后就是:
var repeat = "moveElement('dom_id',100,200,10)" // 这就是repeat最后的结果,为什么是这样?因为:
* var elementID = 'dom_id';
* var final_x = 100;
* var final_y = 200;
* var interval = 10;
// 好了,这上面是原因,那么得到的结果就是:var repeat = "moveElement('dom_id',100,200,10)",重复说了两遍了!!!!!
// 主要的是repeat也是一个变量,repeat这个变量解析之后得到一个字符串
// 好了,下面
movement = setTimeout(repeat,interval);
// 相当于:
movement = setTimeout("moveElement('dom_id',100,200,10)",10);
//这里又为什么啊????
// 因为解析后的repeat:
var repeat = "moveElement('dom_id',100,200,10)"
// 是这样的啊!!!!!!
好了,不多说了,我想应该能明白了吧?
var moveElement = function(elementID,final_x,final_y,interval) {
console.log('elementID:'+elementID'+'&br&final_x:'+final_x+'&br&final_y:'+final_y+'&br&interval:'+interval);
// 好了,你告诉我这里又有问题????好吧,我已经差不多无话可说,如果你连console.log都不懂,请找相关资料学习,如果你连字符串连接也不懂?呵呵。
其实我还想补充一点关于setTimeout的用法和js解析相关的东西的,既然你已经采纳了答案,我也懒得补充了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
****其实这个问题还有较多值得深思的地方。
我们知道起初 把一个数字赋给一个变量,在控制台能轻而易举的打印出这个变量的值。 这个问题涉及到想要在字符串里引用一个数值然后作为代码执行的问题。****
var num =10;
var repeat = "num";
console.log(typeof repeat); //
//ok,问题来了,想要在字符串里打印出num的值怎么办?
var repeat = ""+num+"";
console.log(repeat)
//"10" "string";
最后的部分是作为代码执行
我们在控制台使用eval
typeof eval(repeat)
//ok, 这个能正常的作为数值运行
接下来还有就是原题中的第一个参数 作为字符串的参数
也就是说只要再加一个'' 就能普通的字符串解析运行了
= "message";
var repeat = "'"+mess+"'";
typeof eval(repeat)
// "string"
"message"值能正常在代码中解析出来.
// 如果你用 "mess" 则不能在代码中执行出来。
想要把一个字符串在JavaScript环境中解析其中的变量 例如"number"类型的
使用 ""+variable+"";
"string" 类型的:使用 "'"+variable+"'";
(以上所谓的字符串均默认加了参数本身的字符串)
(很惭愧,就做了点微小的工作)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
要用不同的引号把一对引号分开,你直接把一对引号当参数解析的时候会解析到闭合的成对的引号会出问题的。。。达不到把引号也传入的效果
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你这个问题- -先自己调调看
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
“大家都知道,第一个参数一般是一个字符串”。。。。难道手册里不是写的第一个参数为function类型?简单举例如下,为何要用字符串拼接。
setTimeout(function() {
moveElement(elementID, final_x, final_y, interval);
}, interval);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这本入门书籍,的确经典,在第十章的时候,使用javaScript实现简单的动画,为了能够抽象化,在函数里面传递了参数,而javaScript里面的内置函数setTimeout函数的第一个参数是字符串,这个时候就涉及到了字符串的拼接,为了让调用函数作为参数放到setTimeout函数里,都保持是一个字符串。
定义的函数是这样的 moveElement(elementId,final_x,final_y,interval),其中第一个参数是一个字符串,其余为number。
而定义的拼接变量为 var repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
javaScript里面拼接字符串的时候,都是采用string+string的方式,于是我们可以拆解上述变量
第一个字符串为 "moveElement('"
第二个为变量 elementId
第三个字符串为"',"
第四个为变量final_x
第五个为字符串","
第六个为变量final_y
第七个为字符串","
第八个为变量interval
最后一个味字符串")"
这样拼接后会保留住双引号里面的字符串的原样,所以相当于解析成了如下形式"moveElement('message',100,200,10)",(单引号保留,为了保持传入moveElement函数的第一参数为字符串);
了解这个道理,其实将变量repeat定义为如下形式,也是一样的结果
var repeat ="moveElement(""+elementID+"","+final_x+","+final_y+","+interval+")";
只不过作者没有去使用转义字符,而是使用了单引号被双引号包括时保留原义的用法
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看例子最直观。var a= 1;
""+a+"" 结果等于"1"
'"+a+"' 结果等于""+a+""
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。扫一扫体验手机阅读
Mybatis 字符串传参异常解析
<span type="1" blog_id="2122545" userid='
41篇文章,13W+人气,0粉丝
运维开发全攻略
¥51.0037人订阅
大数据时代的微服务之路
¥51.00515人订阅

我要回帖

更多关于 c语言比较字符串大小 的文章

 

随机推荐