Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。


12
如何在C中将字符串转换为整数?
我试图找出是否存在将字符串转换为C中的整数的另一种方法。 我定期在代码中设置以下内容。 char s[] = "45"; int num = atoi(s); 那么,有没有更好的方法或另一种方法?
260 c  string  atoi 

10
如何防止SIGPIPE(或正确处理)
我有一个小型服务器程序,该程序接受TCP或本地UNIX套接字上的连接,读取一个简单命令,并根据命令发送回复。问题是客户端有时可能对答案没有兴趣,并且提早退出,因此写入该套接字将导致SIGPIPE并使服务器崩溃。防止此处崩溃的最佳实践是什么?有没有办法检查行的另一端是否仍在读取?(select()似乎在这里不起作用,因为它总是说套接字是可写的)。还是应该仅使用处理程序来捕获SIGPIPE并忽略它?
259 c  io  signals  broken-pipe  sigpipe 

12
C中的箭头运算符(->)用法
我正在读一本叫做《 21天自学C》的书(我已经学过Java和C#,所以我的步伐要快得多)。我正在阅读有关指针的章节,->(箭头)运算符没有解释就出现了。我认为它用于调用成员和函数(类似于.(点)运算符,但用于指针而不是成员)。但是我不确定。 我可以得到一个解释和一个代码示例吗?
257 c  pointers  syntax 

3
为什么malloc + memset比calloc慢?
众所周知,这与初始化分配的内存calloc不同malloc。使用calloc,将内存设置为零。使用malloc,不会清除内存。 因此,在日常工作中,我将其calloc视为malloc+ memset。顺便说一句,为了娱乐,我为基准测试编写了以下代码。 结果令人困惑。 代码1: #include<stdio.h> #include<stdlib.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { buf[i] = (char*)calloc(1,BLOCK_SIZE); i++; } } 代码1的输出: time ./a.out **real 0m0.287s** user 0m0.095s sys 0m0.192s 代码2: #include<stdio.h> #include<stdlib.h> #include<string.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { …
256 c  malloc 

10
使用GCC生成可读的程序集?
我想知道如何在我的C源文件上使用GCC来转储机器码的助记符版本,以便可以看到我的代码被编译成什么。您可以使用Java来做到这一点,但我无法通过GCC找到一种方法。 我试图在汇编中重新编写C方法,看看GCC如何做到这一点会有很大帮助。
256 c  gcc  assembly 

15
C和C ++中的合并目的
我以前很舒服地使用过工会。今天,当我阅读这篇文章并得知此代码时,我感到震惊 union ARGB { uint32_t colour; struct componentsTag { uint8_t b; uint8_t g; uint8_t r; uint8_t a; } components; } pixel; pixel.colour = 0xff040201; // ARGB::colour is the active member from now on // somewhere down the line, without any edit to pixel if(pixel.components.a) // accessing the non-active member ARGB::components …
254 c++  c  unions  type-punning 

11
为什么必须在C中链接数学库?
如果在C程序中包含<stdlib.h>或<stdio.h>包含C程序,则在编译时不必链接这些程序,但必须在gcc中<math.h>使用链接到,-lm例如: gcc test.c -o test -lm 这是什么原因呢?为什么我必须显式链接数学库,而不是其他库?
254 c  compilation  math.h 



6
为什么0 <-0x80000000?
我下面有一个简单的程序: #include &lt;stdio.h&gt; #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal &lt; INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } 条件if(bal &lt; INT32_MIN )始终为真。这怎么可能? 如果我将宏更改为: #define INT32_MIN (-2147483648L) 谁能指出这个问题?

9
初始化对象时,{0}是什么意思?
什么时候{0}用于初始化对象,这是什么意思?我在任何{0}地方都找不到引用,而且由于花括号,Google搜索没有帮助。 示例代码: SHELLEXECUTEINFO sexi = {0}; // what does this do? sexi.cbSize = sizeof(SHELLEXECUTEINFO); sexi.hwnd = NULL; sexi.fMask = SEE_MASK_NOCLOSEPROCESS; sexi.lpFile = lpFile.c_str(); sexi.lpParameters = args; sexi.nShow = nShow; if(ShellExecuteEx(&amp;sexi)) { DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE); if(wait == WAIT_OBJECT_0) GetExitCodeProcess(sexi.hProcess, &amp;returnCode); } 没有它,以上代码将在运行时崩溃。
252 c++  c 



22
C如何计算sin()和其他数学函数?
我一直在研究.NET反汇编和GCC源代码,但似乎找不到任何地方的实际实现sin()以及其他数学函数...它们似乎总是在引用其他内容。 谁能帮我找到他们?我觉得C不能运行的所有硬件都不太可能支持硬件中的trig函数,因此在某处一定有软件算法,对吗? 我所知道的几种方法,功能,可以进行计算,并写了我自己的程序来使用泰勒级数为乐趣的计算功能。我对生产语言是多么真实感到好奇,因为尽管我认为我的算法非常聪明(显然并非如此),但我所有的实现总是慢几个数量级。
248 c  math  trigonometry 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.