小编Myk*_*ykC的帖子

如何在c中使用scanf读取空白?

问题:我需要能够识别连续出现两个空格的时间.

我读过以下问题:

如何从\n分隔文件中读取字符串

如何用空格读取scanf

我知道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会使问题变得更容易,当然知道哪些函数可用,哪一个是从一开始就使用的最好的函数.

c whitespace scanf fgets

9
推荐指数
1
解决办法
3万
查看次数

C编程问题使用STRCPY后无关变量被覆盖

问题是变量 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)

c enums pointers programming-languages strcpy

1
推荐指数
1
解决办法
1694
查看次数

标签 统计

c ×2

enums ×1

fgets ×1

pointers ×1

programming-languages ×1

scanf ×1

strcpy ×1

whitespace ×1