小编ana*_*nac的帖子

使用数字作为大小创建整数的char数组

我试图在C中创建一个char数组,用int的数字填充它,但int可以是任意数量的数字.

我正在使用一个名为的创建函数getDigits(int num),它返回int所具有的多个数字.

char buffer[getDigits(number)] = "";
snprintf(buffer, sizeof(buffer),"%d",number);
Run Code Online (Sandbox Code Playgroud)

但是当我使用gcc编译时,它返回:

error: variable-sized object may not be initialized

我已经尝试了一切.当我宣布它时char fileSizeStr[5] = "";,它是有效的.当我尝试动态声明缓冲区大小时,我可以看到问题正在上升,但我真的想知道是否是实现此目的的一种方法.

c arrays printf digits itoa

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

C从文件中删除最后n个字符

我需要使用C代码从文件中删除最后n个字符.首先我试图使用'\ b',但它返回一个分段错误.我已经在这里这里看到了类似问题的有趣答案,但我更愿意使用mmap函数来做到这一点,如果可能的话.我知道通过创建临时文件来截断文件,并将chars写入temp直到原始文件的某个偏移量可能更简单.问题是我似乎不明白如何使用mmap函数来做到这一点,无法看到我需要传递给该函数的参数,特别是address,lengthoffset.从我所读到的,我应该使用MAP_SHAREDin flagsPROT_READ|PROT_WRITEin protect.

函数定义说:

void * mmap (void *address, size_t length, int protect, int flags, int filedes, off_t offset)
Run Code Online (Sandbox Code Playgroud)

这是我的主要内容:

int main(int argc, char * argv[])
{
    FILE * InputFile;
    off_t position;
        int charsToDelete;

    if ((InputFile = fopen(argv[1],"r+")) == NULL)
    {
            printf("tdes: file not found: %s\n",argv[1]);
    }
    else
    {
                charsToDelete = 5;
        fseeko(InputFile,-charsToDelete,SEEK_END);
        position = ftello(InputFile);
        printf("Pos: %d\n",(int)position);
        int …
Run Code Online (Sandbox Code Playgroud)

c truncate mmap file char

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

无法启动Android Studio

我在Windows 7 64bit上成功安装了Android Studio,但在启动时失败了.以下屏幕截图说明了会发生什么.

试图启动Android Studio 之前的错误对话框

我在这里阅读了答案,但仍未找到解决方案.

我做了以下事情:

  • 将环境变量JDK_HOME,ANDROID_STUDIO_JDK和JAVA_HOME设置为"C:\ Program Files\Java\jdk1.7.0_17"
  • 将它们设置为"C:\ Program Files\Java\jdk1.7.0_17"
  • 下载msvcr100d.dll并将其放在"C:\ Windows\System32 \"和"C:\ Windows\SysWOW64 \"
  • 重新安装Android Studio

还有同样的问题.看不出问题出在哪里.我怎么解决这个问题?

ide android launching android-studio

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

具有可变数量输入参数的函数

我正在PostgreSQL DB中创建一个存储过程(函数),它根据输入更新表.为了创建一个可变数量的参数函数,我正在创建一个名为mode的额外输入参数,我用它来控制我在更新查询中使用的参数.

CREATE OR REPLACE FUNCTION update_site(
    mode integer,
    name character varying,
    city character varying,
    telephone integer,
)
RETURNS integer AS
$$
BEGIN
IF mode = 0 THEN
BEGIN
    UPDATE "Sites" SET 
    ("City","Telephone") = (city,telephone)
    WHERE "SiteName" = name;
    RETURN 1;
    EXCEPTION WHEN others THEN
    RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE;
    RETURN 0;
END;
ELSIF mode = 1 THEN
BEGIN
    UPDATE "Sites" SET "City" = city
    WHERE "SiteName" = name;
    RETURN 1;
    EXCEPTION WHEN others THEN
    RAISE NOTICE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql stored-procedures function sql-update

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