- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我昨天参加了 Google Code Jam 2019 第 1C 轮。以下是部分代码。
char str[5]={r1,r2,r3,r4,r5};
printf("%s\n", str);
法官给出了错误的答案。但是如果我添加行 str[5]='\0';
在打印语句之前,它有效。
实际上我检查了运行程序,它似乎打印正常。那么,我可以知道为什么法官给出了错误的答案以及哪里出了问题吗?谁能帮忙告诉我打印带有空字符和不带有空字符的字符串的区别?有人可以确认它是否总是给出正确的结果吗?
最佳答案
C 字符串按照约定以 null 结尾。这意味着 printf 或任何其他接收 C 字符串的函数将读取指向的内存,直到遇到空字符。
在您的情况下,str
中没有空终止符,因此 printf
将继续从接下来的内存中读取。这是未定义的行为。当您自己尝试时,很幸运在 str
之后紧跟着 null,因此 printf
就停在了前面。如果你不太幸运,你可能会遇到垃圾或段错误。这可能就是法官执行代码时发生的情况。
请注意,str[5] = '\0'
也是未定义的行为,因为 str[5]
超出了数组的大小。
有效的替代解决方案:
包含空终止符:
char str[6]={r1,r2,r3,r4,r5,0};
或者将缓冲区的大小传递给printf
:
printf("%.5s\n", str);
或者:
printf("%.*s\n", (int)sizeof(str), str);
或者使用fwrite
:
fwrite(str, 1, sizeof(str), stdout);
fputc('\n', stdout);
关于c - 使用 printf 打印不带空字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988643/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!