Questions tagged «c»

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

8
由pthread_create()调用的函数有多个参数?
我需要将多个参数传递给要在单独线程上调用的函数。我已经读到,执行此操作的典型方法是定义一个struct,向该函数传递一个指向该struct的指针,然后将其取消引用以用作参数。但是,我无法使它正常工作: #include <stdio.h> #include <pthread.h> struct arg_struct { int arg1; int arg2; }; void *print_the_arguments(void *arguments) { struct arg_struct *args = (struct arg_struct *)args; printf("%d\n", args -> arg1); printf("%d\n", args -> arg2); pthread_exit(NULL); return NULL; } int main() { pthread_t some_thread; struct arg_struct args; args.arg1 = 5; args.arg2 = 7; …
93 c  pthreads 


9
C中的嵌套函数
我们可以在C中使用嵌套函数吗?嵌套函数有什么用?如果它们存在于C中,它们的实现因编译器而异吗?
93 c  function  nested 


12
在C中将二维数组归零的最快方法?
我想将C中的一个大型2d数组重复置零。这是我目前正在做的事情: // Array of size n * m, where n may not equal m for(j = 0; j < n; j++) { for(i = 0; i < m; i++) { array[i][j] = 0; } } 我尝试使用memset: memset(array, 0, sizeof(array)) 但这仅适用于一维阵列。当我打印2D数组的内容时,第一行为零,但是随后我得到了一个随机大数的负载,它崩溃了。

3
如何使用命令标志在将来的共享库上设置断点
我正在尝试使用该--command标志自动执行gdb会话。我正在尝试在共享库(相当于DLL的Unix)中的函数上设置断点。我的cmds.gdb看起来像这样: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r 但是,我得到以下信息: shlomi:〜/ progs / bugs-external / kde / font-breaking $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0(Mandriva Linux版本2009.0) 版权所有(C)2008 Free Software Foundation,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改和重新分发它。 在法律允许的范围内,没有任何担保。输入“显示复制” 和“显示保修”了解详情。 该GDB被配置为“ i586-mandriva-linux-gnu” ... (未找到调试符号) 未定义函数“ IA__FcFontMatch”。 使断点在将来共享库加载时挂起?(是或[n])[回答N;输入不是来自终端] 因此,它毕竟不会设置断点。如何将默认值设置为“ y”,以在未决的将来共享库加载时设置断点? 我记得自己有能力做些事情,但是却不记得自己做了什么。
92 c++  c  linux  unix  gdb 

3
UNIX非阻塞I / O:O_NONBLOCK与FIONBIO
在BSD套接字编程的上下文中,我遇到的每个示例和讨论中,似乎都建议将文件描述符设置为非阻塞I / O模式的推荐方法是使用O_NONBLOCK标志fcntl(),例如 int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); 我从事UNIX的网络编程已经有十多年了,并且一直使用该FIONBIO ioctl()调用来执行此操作: int opt = 1; ioctl(fd, FIONBIO, &opt); 从来没有真正考虑过为什么。只是这样学习而已。 有没有人对一个或另一个可能有的优点发表评论?我认为可移植性的位置有所不同,但不知道在何种程度ioctl_list(2)上没有谈到单个ioctl方法的这一方面。

10
C结构中的默认值
我有一个这样的数据结构: struct foo { int id; 诠释路线; int backup_route; int current_route; } 还有一个称为update()的函数,用于请求其中的更改。 更新(42,dont_care,dont_care,new_route); 这确实很长,如果我向结构中添加一些内容,则必须在对update(...)的每个调用中都添加一个“ dont_care”。 我正在考虑将其传递给一个结构,但预先用'dont_care'填充该结构比仅在函数调用中将其拼写更乏味。我可以在默认值dont care的某个地方创建该结构,然后在将其声明为局部变量后设置我关心的字段吗? struct foo bar = {.id = 42,.current_route = new_route}; 更新(&bar); 将我想要表达的信息传递给更新功能的最优雅的方法是什么? 我希望其他所有内容都默认为-1(“ dont care”的秘密代码)
92 c  initialization 

7
如何设置cron作业以每小时运行一次可执行文件?
我需要设置一个cron作业,每小时运行一次使用gcc编译的可执行文件。 我以root身份登录并输入 crontab -e 然后输入以下内容并保存文件。 0 * * * * /path_to_executable 但是,cron作业不起作用。 我看到当我输入/...path_to_executable文字时会遇到细分错误。我只能从可执行文件所在的文件夹中执行该可执行文件。有什么办法可以解决此问题?
92 c  linux  gcc  cron  crontab 


30
算法:从数组中删除重复整数的有效方法
我在接受Microsoft采访时遇到了这个问题。 给定一个随机整数数组,用C编写一个算法,该算法将删除重复的数字并返回原始数组中的唯一数字。 例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?} 一个警告是预期的算法不应要求首先对数组进行排序。并且,当某个元素被删除后,以下元素也必须向前移动。无论如何,在元素向后移动的数组尾部的元素值可以忽略不计。 更新:结果必须在原始数组中返回,并且不应使用辅助数据结构(例如,哈希表)。但是,我认为没有必要保留订单。 Update2:对于那些想知道为什么这些不切实际的限制的人,这是一个面试问题,并且在思考过程中讨论了所有这些限制,以了解我如何提出不同的想法。

12
星号在指针声明中的位置
我最近决定,我只需要最终学习C / C ++,关于指针或更确切地说,它们的定义,我并没有真正了解的一件事。 这些示例如何: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; 现在,据我所知,前三个案例都在做同样的事情:Test不是一个int,而是一个指向int的指针。 第二组示例比较棘手。在情况4中,test和test2都是指向int的指针,而在情况5中,只有test是指针,而test2是“真实” int。情况6呢?与情况5相同?
92 c++  c  pointers  declaration 



16
C ++中循环移位(旋转)操作的最佳实践
左和右移位运算符(<<和>>)已经在C ++中可用。但是,我找不到如何执行循环移位或旋转操作的方法。 如何执行“向左旋转”和“向右旋转”之类的操作? 在这里向右旋转两次 Initial --> 1000 0011 0100 0010 应导致: Final --> 1010 0000 1101 0000 一个例子会有所帮助。 (编者注:如果C的旋转数为零,或者编译成多个旋转机械指令,则许多用C表示旋转的常见方法都会遭受不确定的行为。此问题的答案应记录最佳实践。)

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.