是否有任何标准规定了输出应该是什么?
例如这段代码:
#include <stdio.h>
#include <math.h>
int main(int argc, char** argv) {
float a = INFINITY;
float b = -INFINITY;
float c = NAN;
printf("float %f %f %f\n", a, b, c);
printf("int %d %d %d\n", (int) a, (int) b, (int) c);
printf("uint %u %u %u\n", (unsigned int) a, (unsigned int) b, (unsigned int) c);
printf("lint %ld %ld %ld\n", (long int) a, (long int) b, (long int) b);
printf("luint %lu %lu %lu\n", (unsigned long int) a, (unsigned long int) b, (unsigned …Run Code Online (Sandbox Code Playgroud) 我正在从文件中读取二进制数据,特别是从zip文件中读取.(要了解有关zip格式结构的更多信息,请参阅http://en.wikipedia.org/wiki/ZIP_%28file_format%29)
我创建了一个存储数据的结构:
typedef struct {
/*Start Size Description */
int signatute; /* 0 4 Local file header signature = 0x04034b50 */
short int version; /* ?4 2 Version needed to extract (minimum) */
short int bit_flag; /* ?6 2 General purpose bit flag */
short int compression_method; /* ?8 2 Compression method */
short int time; /* 10 2 File last modification time */
short int date; /* 12 2 File last modification date */
int crc; /* …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用POSIX线程的多线程应用程序.我正在使用线程来做一个定期的工作,为此我使用usleep(3)暂停线程执行.我的问题是如何从主线程取消usleep()计时器,我试过pthread_kill(thread, SIGALRM)但它具有全局效果,导致主应用程序终止(默认情况下).这是我的伪代码:
void threaded_task(void *ptr) {
initialize();
while(running) {
do_the_work();
usleep(some_interval);
}
clean_up();
release_resources();
}
Run Code Online (Sandbox Code Playgroud)
这里是伪函数,用于从主线程停止(并正常关闭)给定线程:
void stop_thread(pthread_t thread) {
set_running_state(thread, 0); // Actually I use mutex staff
// TODO: Cancel sleep timer so that I will not wait for nothing.
// Wait for task to finish possibly running work and clean up
pthread_join(thread, NULL);
}
Run Code Online (Sandbox Code Playgroud)
实现目标的便捷方式是什么?我是否必须使用条件变量,或者我可以使用sleep()变体吗?
一位教授告诉我,你可以使用utime.h获得文件的最后修改时间.但是,手册页似乎引用了utime()仅设置此值.如何在UNIX系统上查找上次在C中更改文件的时间?
const struct sockaddr FAR* name,
Run Code Online (Sandbox Code Playgroud) 好吧,这是一个非常有趣的问题,并且可能没有任何简单的方法可以做到这一点,但想到我会在决定修改Perl是我的基本答案之前抛弃它.
所以我有一个以嵌入式方式调用Perl脚本的C应用程序.这一切都很好,花花公子,我可以传递信息并获取信息非常棒.然而,现在进入我的下一次征服; 我需要允许我的嵌入式脚本能够调用原始C叫它的C应用程序中的一些函数.
这很重要,因为XSUB会要求它是一个外部库; 但我不希望它是一个外部库我希望它是对C函数的直接调用.现在也许这可以通过XSUB完成,我刚刚阅读并理解错误.
Application -(run)-> Perl
Application <-(function_x())- Perl
Application -(returnfunction_x)-> Perl
Run Code Online (Sandbox Code Playgroud)
这不能是外部库的原因是因为我依赖于仅在应用程序中创建/存储的数据.
我在UNIX上从事C/C++工作,经常看到核心文件.很多时候核心文件很难调试,以找到核心或分段错误的实际原因.你能建议我一个高效的调试器吗?
我见过人们的代码是:
char *str = NULL;
Run Code Online (Sandbox Code Playgroud)
而且我也看到了这一点,
char *str;
Run Code Online (Sandbox Code Playgroud)
我想知道,初始化字符串的正确方法是什么?什么时候你应该初始化一个字符串w /和w/out NULL?
当我点击项目属性时,我可以设置Warning level(More Warnings)和Command Line -> Additional Options(-std=c99).但我希望我的所有C项目默认都有这种选项,而不是每次创建新项目时都手动设置它们.

在下面的给出示例中,我尝试将stacksize设置为1kb.
为什么现在可以在堆栈中分配一个大小为8kbin 的int数组foo()?
#include <stdio.h>
#include <sys/resource.h>
void foo(void);
int main() {
struct rlimit lim = {1024, 1024};
if (setrlimit(RLIMIT_STACK, &lim) == -1)
return 1;
foo();
return 0;
}
void foo() {
unsigned ints[2048];
printf("foo: %u\n", ints[2047]=42);
}
Run Code Online (Sandbox Code Playgroud)