小编Joh*_*ohn的帖子

简单的C scanf不起作用?

如果我尝试以下内容:

int anint;
char achar;

printf("\nEnter any integer:");
scanf("%d", &anint);
printf("\nEnter any character:");
scanf("%c", &achar);
printf("\nHello\n");
printf("\nThe integer entered is %d\n", anint);
printf("\nThe char entered is %c\n", achar);
Run Code Online (Sandbox Code Playgroud)

它允许输入一个整数,然后scanf完全跳过第二个,这真的很奇怪,因为当我交换两个(charscanf优先)时,它工作正常.究竟是什么错了?

c console scanf

20
推荐指数
3
解决办法
4万
查看次数

位标志的简单布尔运算符

我试图在我的项目中了解更多有关此内容的信息.

我目前基本上有这个:

unsigned char flags = 0; //8 bits

flags |= 0x2; //apply random flag

if(flags & 0x2) {
   printf("Opt 2 set");
}
Run Code Online (Sandbox Code Playgroud)

现在我希望做一些更复杂的事情,我想要做的是应用这样的三个标志:

flags = (0x1 | 0x2 | 0x4);
Run Code Online (Sandbox Code Playgroud)

然后删除标志0x1,并0x2从它?我以为我可以做这样的事情应用按位NOT(和按位AND来应用它):

flags &= ~(0x1 | 0x2);
Run Code Online (Sandbox Code Playgroud)

显然,当我检查时,他们会留在那里或者某种方式.

我也不知道如何检查它们是否不存在于位标志中(所以我无法检查我之前的代码是否有效),它会是这样的吗?

if(flags & ~0x2) 
    printf("flag 2 not set");
Run Code Online (Sandbox Code Playgroud)

我无法从我最近的搜索中找到适用于此的任何资源,我愿意学习这些来教别人,我真的很感兴趣.如果这令人困惑或简单,我道歉.

c c++ bitflags boolean-operations

8
推荐指数
2
解决办法
2万
查看次数

带sizeof的简单printf根本不起作用

我得到了最简单的代码来显示数据类型的sizeof(),比如说int.

#include <stdio.h>
int main() { 
  printf('%i', sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

无论我做什么,例如将sizeof(int)放入一个整数,或使用'zu'而不是'i',它就会把这个错误交给我:

error: invalid conversion from ‘int’ to ‘const char*’
Run Code Online (Sandbox Code Playgroud)

我的编译器有问题吗?我不明白为什么我不能打印这么简单sizeof..

编辑:这似乎是一个printf('%s', 'foo');还告诉我,我将intconst char*,如何在地球上?

c sizeof

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

C++中毫秒精确的基准测试?

我真的不想描述,因为我想要在不同的简单功能上做很多不同的小基准测试.对于我的生活,我找不到一种方法来记录C++中的毫秒数,顺便说一句,我正在使用Linux.

你能否建议以毫秒为单位获取系统时钟的方法(如果我找不到简单的方法,我可以用几秒钟来解决......)以及它们包含在哪个标题中?

c++ linux benchmarking clock gettimeofday

7
推荐指数
2
解决办法
6330
查看次数

PHP:PDO的自定义错误处理程序?

我试图尝试用PDO异常做一些有用的事情而不是显示它们,但我找不到我的生活如何使用错误处理程序(set_error_handler)或任何自定义来处理PDO异常.

我现在用的try.. catch当然块捕获异常,我实现在一个自定义的错误处理程序catch的一部分,或者我可以完全跳过试戴> catch块作为例外处理程序将处理它,我(通过调用or throw new exception (...)上声明?

我想我要问的是一个示例来捕获PDO异常并记录它们或多或少(任何简单的代码是否正确我可以使用,我不是太愚蠢).

php error-handling pdo exception-handling

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

MySQL:使用BETWEEN的多个AND查询?

我见过一位同事在这些条件下使用它来从表中获取用户:

SELECT * FROM users WHERE gender ='male' 
AND activated='yes' 
AND date_registered BETWEEN '$date1' AND '$date2' 
Run Code Online (Sandbox Code Playgroud)

他说有一个问题(当它AND activated='yes'放在那里时它没有输出任何行,但没有抛出MySQL错误.

你能不这样做吗?你需要把它放在方括号或疯狂的东西关联BETWEENAND

顺便说一下,日期格式正确.

php mysql between

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

getch返回-1?

他们询问如何捕获诸如F11或insand之类的密钥getchr不会为这些密钥返回任何内容,并且我找不到任何可以接受来自输入事件的原始输入的工作.

我现在正在尝试使用C++程序中的ncurses/curses来捕获这些键.

我的测试程序很简单,基本上是:

#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main() {
    int car;
    while(c != '\b') {
        c = getch();
        printf("%i", c);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我当然使用它与另一个getch()函数相同,但它返回-1无限次..我在Arch linux中使用最近的内核,在标准终端中(也在测试中xterm)

是否需要打开某个开关才能在库中使用此getch()?

c keyboard conio

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

PHP/PDO:返回没有foreach的查询行?

我对此感到困惑,我运行了一个查询,如

foreach($dbh->query("SELECT * FROM ...") as $row) { 
  ...do something with row()
Run Code Online (Sandbox Code Playgroud)

但是当我var_dump $dbh它是一个PDOstatement对象.

这引出了两个问题:

  • foreach如何以某种方式将对象解析为单独的行?
  • 如何将所有行存储在数组中,例如$ arr = $ dbh-> query(...)?这不起作用,因为它仍然是一个对象

我当然可以在foreach下运行,并且执行$ arr [] = $ row,但这看起来有点傻.

php mysql pdo

2
推荐指数
2
解决办法
2872
查看次数

PHP:无法预测简单的关联数组

我写了一个代码来解析一些东西,动态地从一个数组的数组键中生成一个数组.这是一个表单,所以奇数键有一个值,这就是问题所在.

我的代码:

//array values are not needed in my code, just junk rather
$array = array('one_a'=>2, 'three_b', 'four_c', 'five_d'=>12);

$number = array();
$letter = array();

foreach($array as $element) {
    $parts = explode("_", $element);
    $number[] = $parts[0];
    $letter[] = $parts[1];
}

print_r($number);
Run Code Online (Sandbox Code Playgroud)

我不明白这可能会出错,但是当foreach()迭代通过关联数组时,它会将"2"和"12"作为单独的数组键读取!这会破坏我的$explode代码并抛出错误,因为"2"中没有错误_.

为什么关联数组会像这样失败?我尝试明确定义as $element => $value,不使用$ value(试图忽略它),但它会引发更多错误.

php foreach associative-array

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

指针指针的算术运算(*argv [])?

我知道这foo[bar]等于*(foo + bar),但*foo[bar]等于,例如访问*argv[2]?我对理解这一点感到有些困惑,我认为可能有点像*(*(foo) + bar)但不确定......

如果这是一个简单的答案,我道歉.

c math pointers

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