小编Fra*_*lea的帖子

C编程 - 编写自己编译的文本文件

我正在尝试将文件写入磁盘,然后自动重新编译.不幸的是,似乎没有用,我收到的错误信息我还不明白(我是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退出状态

c compiler-construction writing file cc

3
推荐指数
1
解决办法
990
查看次数

C/C++静态与动态库示例

我正在学习静态和动态库.到目前为止,我理解为什么我需要一个动态库.如果有什么东西在变化,最好插入一个新版本,所有的应用程序都会自动更新,甚至没有注意到.

a)非常适合插件,b)使用相同库的多个应用程序和c)需要纠正错误时的维护.

但是,为什么有人会使用静态库?我的意思是什么是优势?某人有一个例子,所以我能更好地理解它吗?是否使产品成为专有产品?

编辑:由于评论中的混乱.我理解静态库是什么,我也知道动态库之间的区别.除了我之外,为什么有人会使用静态库而不仅仅是源本身.我想我现在开始明白静态库具有以下优点:

a)更好的代码维护b)更快的编译时间

c c++ static dynamic

3
推荐指数
2
解决办法
5439
查看次数

从用户隐藏PHP

有没有办法隐藏我从用户那里使用PHP的事实?我想这样做有两个原因:

  • 1)因此地址栏中的链接看起来更干净(就像在stackoverflow上这样)
  • 2)防止潜在的黑客立即知道要查找的内容

第2点是否真实,或者黑客是否知道我正在使用的是什么?我正在使用php5-fpm的nginx.

php .htaccess hide

3
推荐指数
1
解决办法
499
查看次数

如何让MD5更安全?还是真的有必要吗?

我将用户名和密码存储在MySQL数据库中,并使用MD5进行哈希处理.但是,我只是使用标准的PHP函数而没有任何修改.现在,我读到MD5坏了.你好吗?您是通过不同的哈希机制运行它几次还是添加某种形式的盐?

php security md5

2
推荐指数
2
解决办法
2634
查看次数

C编程:奇怪的数组声明

我正在查看其中一个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)

什么是 "." …

c arrays pointers

2
推荐指数
1
解决办法
137
查看次数

C:字符串操作添加更多字符而不会导致缓冲区溢出

在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中最简单的方法是什么?

c string

1
推荐指数
1
解决办法
1010
查看次数

C:释放每一个malloc还是只放一个主要的?

我有一个指针***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)

c malloc free pointers

0
推荐指数
1
解决办法
583
查看次数

Apache2将localhost显示为mydomainname.com

我想录制一个网站的截屏视频,但它尚未上线.在Apache2中是否可以临时更改localhost以使其看起来像它的实际Web地址?

apache2

0
推荐指数
1
解决办法
84
查看次数

C:简单的指针问题

我想编写一个返回用户名和密码的访问函数.这是我想出的:

#include <stdio.h>

char *
getMySQLUsername()
{
    return "myUsername";
}

char *
getMySQLPassword()
{
    return "myPassword";
}

int main()
{
    printf("%s\n", getMySQLPassword());
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但这个代码是否正确?

c pointers

0
推荐指数
1
解决办法
128
查看次数

MySQL:使用子查询中的信息DELETE FROM

我有一个表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)

这可以在一个语句中完成而不将逻辑放入正在执行的应用程序中吗?

mysql subquery delete-row

0
推荐指数
1
解决办法
1333
查看次数