是否可以暂停执行c循环?例如,类似于python中的raw_input
。基本上,我想遍历while
循环并检查变量在循环的每次迭代中的变化情况:
while ((c=getchar()) != EOF) {
// in_string
if (c == '"' && !in_single_line_comment && !in_multi_line_comment && !has_preceding_backslash)
in_string = !in_string;
// has_preceding_backslash
if (c == '\\' && !in_string && !in_single_line_comment && !in_multi_line_comment)
has_preceding_backslash = !has_preceding_backslash;
// this line here, to 'pause' the program until further user input.
raw_input("Character: %c | InString: %d | HasSlash: %d", c, in_string, has_preceding_backslash)
}
有没有办法做这样的事情?
答案 0 :(得分:2)
如何“循序渐进”循环
查看到目前为止给出的其他答案('使用调试器','GDB');另外:您可能正在使用的任何IDE(例如eclipse,CodeBlocks等)都为调试器提供了GUI界面,这将使调试更加简单...
如果找不到合适的按钮(在月食中,它看起来像是个bug(甲虫)...),将鼠标悬停在它们上方以查看工具提示,其中之一应该可以显示您的按钮。或者,您应该找到一些菜单项。
下一步将是学习如何设置断点,以便程序执行恰好在所需的点停止。
// this line here, to 'pause' the program until further user input. raw_input("Character: %c | InString: %d | HasSlash: %d", c, s, h)
现在,如果您真的只想获得用户输入(虽然与问题标题相反,但评论却暗示了这一点),则您有几种选择,请看看scanf
* ,getchar
,fgets
(如果您想阅读完整的一行),strtok
(用fgets
标记之前读取的字符串)和this answer(将字符串解析为整数)。
* 当将字符串读入缓冲区时,请务必小心– 始终提供长度保护,以防止超出缓冲区范围写入!此保护标志必须比缓冲区大小小1个,以便为终止的空字符留出空间。
答案 1 :(得分:0)
答案 2 :(得分:0)
执行此操作的最佳方法是调试器,例如GDB。
GDB可能已经安装在您选择的Linux发行版中。可以通过运行gdb ./executable-name
来使用它。使用break filename.c:line-number
或break function_name
设置断点。使用run
或start
运行有问题的程序。 p variable_name
查看变量的值。使用step
执行下一行(并输入任何函数调用)。在不输入函数调用的情况下,使用next
执行下一行。确保使用-g
编译代码。另外,layout src
在使用调试器时很高兴看到您的代码。
如果要在用户输入密钥之前停止执行,则可以使用getchar()
中的stdio.h