从零开始的数字有什么特别之处?

这有点愚蠢的问题,但对我来说很有意思) 这就是我在visual studio 2013中获得的 int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number… 如果number从零开始并且包含8,那就是编译错误。 这是正常的吗? 如果00016 == 14,那么编译器在启动零时究竟做了什么? […]

printf从char数组中添加额外的`FFFFFF`到hex打印

请考虑以下简化代码。 我想从文件中提取一些二进制数据/流,并以hex格式将其打印到标准输出。 我有额外的3个字节0xFFFFFF 。 怎么了? 多余的字节来自哪里? 产量 in: 2000FFFFFFAF00690033005A00 out: 2000FFFFFFAF00690033005A00 program.c #include #include int main(int argc, char** argv) { int i; char raw[10] = {0x20,0x00,0xAF,0x00,0x69,0x00,0x33,0x00,0x5A,0x00}; FILE *outfile; char *buf; printf(“in:\n\t”); for( i=0; i<10; i++ ) printf("%02X", raw[i]); outfile = fopen("raw_data.bin", "w+b"); fwrite(raw, 1, 10, outfile); buf = (char *) malloc (32 * sizeof(char)); fseek(outfile, […]

使用C中的指针的const用法

我正在讨论C并且有一个关于使用指针的const用法的问题。 我理解以下代码: const char *someArray 这是定义指向char类型的指针, const修饰符意味着不能更改someArray存储的值。 但是,以下是什么意思? char * const array 这是指定参数的另一种方法,该参数是指向名为“array”的数组的char指针,该数组是const且无法修改? 最后,这个组合意味着什么: const char * const s2 作为参考,这些来自第7章中的Deitel C编程书,所有这些都被用作传递给函数的参数。

c中的什么scanf函数返回?

我知道签名是 int scanf(const char *format, …) 这个int值与什么有关?

随机数组生成,没有重复

我正在尝试创建一些生成随机数组但没有重复值的内容。 我已经看过其他答案,但似乎没有人帮我理解。 我想不出实际生成不包含重复项的随机数的方法。 这是我到目前为止所尝试的: srand(time(NULL)); int numbers [4]; for (int x=0; x!=4;x++) { numbers[x] = 1 + (rand() % 4) ; printf(“%d “, numbers[x]); } 任何帮助将不胜感激。

如何检测Linux上程序的启动?

我写了一个简单的守护进程。 当我运行任何程序时,该守护进程应该响应。 这该怎么做? 在一个大守护进程循环中: while(1) { /* function which catches new programm running */ } 当我运行一个新程序(创建新进程)时,在linux中调用什么函数?

在C中返回printf()函数的值

printf()函数将返回打印的字符数。 但是在下面的代码中为什么要打印5。 int a=1000; printf(“%d”,printf(“\n%d”,a)); 它打印“1000”一次和一个空格,所以总共我们有2个字符。 它应该输出“1000 2”。 但它的输出“1000 5”。

在c中使用strtok

我需要使用strtok读取名字和姓氏并将其分开。 如何在两个单独的char数组中存储我可以独立使用它们的名称? #include #include int main () { char str[] =”test string.”; char * test; test = strtok (str,” “); while (test != NULL) { printf (“%s\n”,test); test= strtok (NULL, ” “); } return 0; }

为什么在C中减去’0’会导致char表示的数字?

有人可以解释为什么这有效吗? char c = ‘9’; int x = (int)(c – ‘0’); 为什么从char的ascii代码中减去’0’会导致char表示的数字?

strcmp()返回C中的值

我正在学习C中的strcmp() 。我知道当两个字符串相等时, strcmp返回0。 但是,当手册页指出strcmp在第一个字符串小于第二个字符串时返回小于0时,它是指长度,ASCII值还是其他什么?