问题:我需要能够识别连续出现两个空格的时间.
我读过以下问题:
我知道scanf问题:http://c-faq.com/stdio/scanfprobs.html
输入将采用以下格式:
1 5 3 2 4 6 2 1 9 0
Run Code Online (Sandbox Code Playgroud)
两个空格表示需要处理下一组数据并与其自身进行比较.线的长度未知,每组中的数字或整数是未知的.两个空格是分隔下一个数据集的最多空格.
虽然我可以使用fgets和各种内置函数来解决这个问题,但我现在处理scanf问题可能会更容易.但是,如果不是这样,使用fgets,strtok和atoi将完成大部分工作,但我仍然需要连续识别两个空格.
下面将采用整数直到输入非整数.
while ( scanf ( "%d", &x ) == 1 )
我需要做的是读取空格,如果有两个连续的空格,我将使程序与下一组数据做一些不同的事情.
一旦我得到一个白色空间,我不知道该怎么说:
if ((input == "whitespace") && (previousInput == "whitespace")) ya da ya da else (input == "whitespace") ya da ya da else ya da ya da
感谢您的时间,感谢您的帮助.
获得的经验: 尽管Jonathan Leffler在下面发布了scanf的解决方案,但getc的解决方案更加简单(通过对内部scanf,正则表达式和char的更少了解).回想起正则表达式的更好的知识,scanf和char会使问题变得更容易,当然知道哪些函数可用,哪一个是从一开始就使用的最好的函数.
问题是变量 nodeType 在 STRCPY 完成运行后被更改。nodeType 不是与 STRCPY 调用中使用的任何其他变量相关的变量。但它是在同一个结构中。nodeType 是一个 int 值为 3 的枚举。
以下信息可能是最相关的。我从枚举和结构中删除了大部分变量,因此它们不可见,我认为它们与问题无关。如果这有什么不同的话,我正在 VS2010 中编码。这是创建 btree 的作业的一部分,但我的问题与 btree 无关。
enum NODETYPE
{
ROOTLEAF
};
typedef struct node
{
char key[MAX_CHILDREN_ROOT][MAX_KEY_LENGTH];
NODETYPE nodeType;
} nodeT;
Run Code Online (Sandbox Code Playgroud)
... insertElement 函数的一部分
for (int i = 0; i < (b->tempNode->numberOfKeys - b->searchData.position); i++)
{
strcpy(b->tempNode->key[b->tempNode->numberOfKeys - i], b->tempNode->key[b->tempNode->numberOfKeys - (i + 1)]);
}
Run Code Online (Sandbox Code Playgroud)
..我调用的函数是插入一个元素。在此之前我已多次调用该函数,但这是下面这段代码第一次运行。STRCPY 运行后,nodeType 的值为 1280070990。我将变量设置为要监视,而它出现 CXX0017 错误,我认为这仅意味着它不在范围内。
我查了号码 1280070990,它从各种引擎中产生了一堆与游戏相关的问题。我猜这是一个内存地址问题。
下面提供了解决方案。这是在数组边界之外写入的一个简单错误。我像这样分解旧代码,然后遍历它。这使我能够确定我在键数组键之外编写的问题。
for (int i = 0; i < (b->tempNode->numberOfKeys - b->searchData.position); i++)
{ …Run Code Online (Sandbox Code Playgroud)