- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过检查空字符串 ("") 来终止我的 C 程序,但它似乎不起作用。我也尝试与“\0”进行比较,但无济于事。
#include <stdio.h>
#include <string.h>
int main(void) {
char nameInput[128];
for(;;) {
printf("Enter nation name: ");
scanf("%s", nameInput);
if(!strcmp(nameInput, "")){
break;
}
printf("Got nation named \"%s\"\n", nameInput);
}
printf("All done getting nations!\n");
return 0;
}
最佳答案
scanf("%s", nameInput);
中的 "%s"
说明符首先使用1 并丢弃前导空格在扫描并保存到 nameInput
之前,包括 Enter 中的所有 '\n'
。
这就是为什么重复输入空行不会推进扫描的原因。 "%s"
正在等待一些非空白输入。
scanf()
更好的替代方法是使用 fgets()
读取所有用户输入,然后解析 string。
fgets()
读取 line 并将结果保存为 string - 通常包括行的结尾 '\n'
.
// scanf("%s", nameInput);
if (fgets(nameInput, sizeof nameInput, stdin)) {
// Success at reading input.
nameInput[strcspn(nameInput, "\n")] = '\0'; // lop off the potential trailing \n
if(!strcmp(nameInput, "")){ // or simply `if(nameInput[0] == '\0')
break;
}
...
have tried to compare to "\0" as well but it was to no avail.
if(!strcmp(nameInput, ""))
和 if(!strcmp(nameInput, "\0"))
做同样的事情。 strcmp()
正在比较 strings。
""
是 1 个 char
的 字符串文字:空字符。"\0"
是 2 个 char
的 字符串文字:两个 空字符。
string 比较在第一个 null 字符处停止。
"%s"
本身也没有宽度限制。代码对诸如“BlahBlah...(120_some_more)Blah”之类的输入没有安全防护,并且可能由于 char nameInput[128];
的缓冲区溢出而导致未定义的行为。代码可以使用 "%127s"
来防止这种情况发生,但这只能解决 scanf()
的缺点之一。
1
Input white-space characters (as specified by the
isspace
function) are skipped, unless the specification includes a[
,c
, orn
specifier. C17dr § 7.21.6.2 8
关于与空字符串相比,C 程序不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61401082/
我正在尝试用 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.
我是一名优秀的程序员,十分优秀!