我正在尝试将文件写入磁盘,然后自动重新编译.不幸的是,似乎没有用,我收到的错误信息我还不明白(我是C初学者:-).如果我手动编译生成的hello.c,它一切正常吗?!
#include <stdio.h>
#include <string.h>
int main()
{
FILE *myFile;
myFile = fopen("hello.c", "w");
char * text =
"#include <stdio.h>\n"
"int main()\n{\n"
"printf(\"Hello World!\\n\");\n"
"return 0;\n}";
system("cc hello.c -o hello");
fwrite(text, 1, strlen(text), myFile);
fclose(myFile);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o:在函数_start':
(.text+0x20): undefined reference tomain中'collect2:ld返回1退出状态
我正在学习静态和动态库.到目前为止,我理解为什么我需要一个动态库.如果有什么东西在变化,最好插入一个新版本,所有的应用程序都会自动更新,甚至没有注意到.
a)非常适合插件,b)使用相同库的多个应用程序和c)需要纠正错误时的维护.
但是,为什么有人会使用静态库?我的意思是什么是优势?某人有一个例子,所以我能更好地理解它吗?是否使产品成为专有产品?
编辑:由于评论中的混乱.我理解静态库是什么,我也知道动态库之间的区别.除了我之外,为什么有人会使用静态库而不仅仅是源本身.我想我现在开始明白静态库具有以下优点:
a)更好的代码维护b)更快的编译时间
有没有办法隐藏我从用户那里使用PHP的事实?我想这样做有两个原因:
第2点是否真实,或者黑客是否知道我正在使用的是什么?我正在使用php5-fpm的nginx.
我将用户名和密码存储在MySQL数据库中,并使用MD5进行哈希处理.但是,我只是使用标准的PHP函数而没有任何修改.现在,我读到MD5坏了.你好吗?您是通过不同的哈希机制运行它几次还是添加某种形式的盐?
我正在查看其中一个FFMPEG文件中的源代码,发现了一个看起来很奇怪的构造.请问一下这里发生了什么?
init和query_formats实际上是之前在文件中声明的函数.
AVFilter avfilter_vf_fade = {
.name = "fade",
.description = NULL_IF_CONFIG_SMALL("Fade in/out input video"),
.init = init,
.priv_size = sizeof(FadeContext),
.query_formats = query_formats,
.inputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.config_props = config_props,
.get_video_buffer = avfilter_null_get_video_buffer,
.start_frame = avfilter_null_start_frame,
.draw_slice = draw_slice,
.end_frame = end_frame,
.min_perms = AV_PERM_READ | AV_PERM_WRITE,
.rej_perms = AV_PERM_PRESERVE, },
{ .name = NULL}},
.outputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO, },
{ .name = NULL}},
};
Run Code Online (Sandbox Code Playgroud)
什么是 "." …
在CI中我的一个字符串中有一条路径
/home/frankv/
Run Code Online (Sandbox Code Playgroud)
我现在想要添加此文件夹中包含的文件名 - 例如file1.txt file123.txt等.
宣布我的变量是这样的
char pathToFile[strlen("/home/frankv/")+1]
Run Code Online (Sandbox Code Playgroud)
要么
char *pathToFile = malloc(strlen("/home/frankv/")+1)
Run Code Online (Sandbox Code Playgroud)
我的问题是我不能简单地添加更多字符,因为它会导致缓冲区溢出.另外,如果我不知道文件名会有多长,我该怎么办?
我已经习惯了PHP lazy $ string1.$ string2 ..在C中最简单的方法是什么?
我有一个指针***resultSet,我将其作为参数传递给我的SQL函数,该函数从数据库中读取未知数量的数据.数据的实际处理发生在函数之外.
清理这个指针构造时,我只需释放一次主指针,free就可以找到所有后续分配,还是我必须释放我创建的每个malloc?
while((row = mysql_fetch_row(result))) {
// allocating the rows pointer
resultSet = malloc(sizeof(void)*(int)mysql_num_rows);
(*rows)++;
for (i=0 ; i < mysql_num_fields(result); i++)
{
// allocating the fields pointer
*(resultSet+i) = malloc(sizeof(void)*(int)mysql_num_fields);
// allocating the character pointer
**resultSet = malloc(sizeof(char)*strlen(row[i])+1);
(*fields)++;
snprintf(**resultSet, strlen(row[i])+1, "%s", row[i]);
printf("%s\t",**resultSet);
if (i==6)
{
printf("\t %s\n",**resultSet);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想录制一个网站的截屏视频,但它尚未上线.在Apache2中是否可以临时更改localhost以使其看起来像它的实际Web地址?
我想编写一个返回用户名和密码的访问函数.这是我想出的:
#include <stdio.h>
char *
getMySQLUsername()
{
return "myUsername";
}
char *
getMySQLPassword()
{
return "myPassword";
}
int main()
{
printf("%s\n", getMySQLPassword());
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但这个代码是否正确?
我有一个表delete_requests,其中我存储了我的users表条目的删除请求的id.是否可以使用delete_requests中的信息作为条件从用户中删除?
我的问题是,结果集通常不会限制在一行,而是返回几行.
DELETE FROM users WHERE id=(SELECT id FROM delete_requests)
Run Code Online (Sandbox Code Playgroud)
所以MySQL抱怨:
#1242 - Subquery returns more than 1 row
Run Code Online (Sandbox Code Playgroud)
这可以在一个语句中完成而不将逻辑放入正在执行的应用程序中吗?