问题标签 [scanf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C,从单个输入行读取多个数字(scanf?)
我用 C 语言编写了一个应用程序,它需要两行输入。第一个输入告诉 int 数组有多大,第二个输入包含由空格分隔的值。例如,以下输入
应该创建一个包含{1,2,3,4,99}
最快的方法是什么?我的问题是读取多个数字而不遍历整个字符串检查它是空格还是数字?
谢谢。
c - 使用“D”而不是“E”读取 ASCII 数字以使用 C 进行科学记数法
我有一个看起来像这样的数字列表:1.234D+1
或1.234D-02
。我想使用 C 读取文件。该函数atof
将仅忽略D
并仅翻译尾数。
该函数fscanf
将不接受该格式'%10.6e'
,因为它期望指数E
中的 a 而不是 a D
。
当我在 Python 中遇到这个问题时,我放弃了,只是在从字符串转换为浮点数之前使用了字符串替换。但是在 C 中,我相信一定有另一种方式。
那么,您将如何读取带有数字的文件D
而不是E
科学记数法呢?请注意,我不是指如何读取字符串本身,而是如何将它们转换为浮点数。
谢谢。
c - sscanf + c99 在某些平台上不起作用?
当我编译一个简单的Hello World!在我的本地 Debian lenny x64 上使用 sscanf 函数的程序,它可以工作。但是当我将相同的程序上传到运行 CentOS x86 的服务器上时,它就不起作用了。如果我不使用 sscanf,那么该程序可以在两台计算机上运行。
gcc -std=c99 -O2 -pipe -m32
如果我用 sscanf 编译它但没有 -std=c99,那么它可以在两台计算机上运行。
gcc -O2 -管道 -m32
CentOS x86 上的 sscanf 和 c99 有什么问题?我认为使用 -m32 标志编译可以在所有 Linux 上工作?(我对 CentOS 服务器的访问权限有限,因此我无权访问错误消息。)
c - C - 如何让 fscanf() 确定它读取的内容是否只有数字,没有字符
想象一下,我有一个 csv,每个值都是一个整数。所以第一个值是 INTEGER 100
。
我希望 fscanf() 读取这一行,或者告诉我它只是一个整数,或者不是。所以,它会通过100
但失败100t
。我一直在努力工作的是“%d”,其中逗号是我的 CSV 的分隔符。所以整个功能是
不幸的是,这在“100t”上失败,在“100”上有效,在“t”上有效。所以它只是不区分100
和100t
(当然,所有这些数字后跟逗号
c - scanf 段错误和 while 循环内的各种其他异常
我收到了一些不同的错误,它们似乎无法重现(此时的段错误除外)。这段代码大约在 10 分钟前运行良好,然后它无限循环 printf 命令,现在它在上面提到的行上出现了故障。我唯一改变scanf(">%s",command);
的是它现在的样子。如果我将命令变量更改为数组,它就可以工作;显然,这是因为为它预留了存储空间。
- 我因为告诉某人他们需要 malloc 指针*而被起诉(但这通常似乎可以解决问题,例如将其设为数组)
- 我输入的命令是“魔法”——5 个字符——所以不应该有任何疯狂的堆栈溢出。
- 我在 Mac OS X 10.6 上运行最新版本的 xCode(非 OS4)和标准 gcc
- 这就是我编译程序的方式:
gcc --std=c99 -W sfs.c
只是想弄清楚发生了什么。因为这是一个学校项目,我永远不会再看到了,我只会编写一些菜鸟的工作,这会让我的老板哭泣 :) 但之后我很想弄清楚为什么会发生这种情况,而不仅仅是让一些修复它,如果有一些修复它为什么该修复工作。
c++ - C++:用简单的正则表达式解析还是我应该使用 sscanf?
我需要解析一个像func1(arg1, arg2); func2(arg3, arg4);
. 这不是一个非常复杂的解析问题,所以我宁愿避免使用 flex/bison 或类似的实用程序。
我的第一个方法是尝试使用 POSIX Cregcomp/regexec
或 C++ 的 Boost 实现std::regex
。我编写了以下正则表达式,但它不起作用(我将进一步解释原因)。
请注意,组1
捕获标识符,组4..n-1
旨在捕获除最后一个之外的参数,后者由 group 捕获n
。
当我将此正则表达式应用于时,说func(arg1, arg2, arg3)
我得到的结果是一个数组{func, arg2, arg3}
。这是错误的,因为arg1
不在其中!
问题是在标准正则表达式库中,子标记只捕获最后一个匹配项。换句话说,例如,如果您将正则表达式"((a*|b*))*"
应用于"babb"
,则内部匹配的结果将是bb
并且所有先前的捕获都将被遗忘。
让我烦恼的另一件事是,如果出现错误,则无法知道哪个字符未被识别,因为当输入被拒绝时,这些函数提供的有关解析器状态的信息非常少。
所以我不知道我是否在这里遗漏了一些东西......在这种情况下我应该使用sscanf
或类似的东西吗?
请注意,我更喜欢使用 C/C++ 标准库(也可能是 boost)。
c - 双打的 sscanf
这是一个简单的问题,但我看不到:
为什么d
不包含双精度值8.649292
?
c - 如何从 \n 分隔文件中读取字符串
我正在尝试读取返回分隔文件。充满了短语。
我正在尝试将每个短语放入一个字符串中。
问题是当我尝试读取文件时
该字符串仅包含一个单词。当它碰到一个空格时,它会停止读取字符串
scanf - 如何让 fscanf 在满足条件时重新读取一行?
而(fscanf(跟踪文件,“%s”,操作码)!= EOF){blah}
有时我需要让 fscanf 在满足我的代码中的某个条件时重新读取一行。这可能吗; 我该怎么做?
谢谢。
c - 使用 C 预处理器为 scanf 构造字符串文字?
我正在尝试创建一个sscanf
字符串文字以帮助防止 C99 中的缓冲区溢出。目标是这样的:
显而易见的“手动”解决方案类似于:
但是,我希望在给定缓冲区大小为 16 的情况下自动生成“%15X”。此链接几乎适用于我的应用程序:将预处理器令牌转换为字符串,但它不处理 -1。
建议?