Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法将值指定给文件变量_C_Arrays_Gtk - Fatal编程技术网

C 无法将值指定给文件变量

C 无法将值指定给文件变量,c,arrays,gtk,C,Arrays,Gtk,我是C语言的新手,我试图用函数的结果填充一个文件范围的数组变量,这里有一个简单的代码示例来说明我的意思,有人能告诉我为什么这不起作用吗 #include <sys/types.h> #include <dirent.h> #include <regex.h> #include <stdio.h> #include <gtk/gtk.h> #include <string.h> #include <unistd.h>

我是C语言的新手,我试图用函数的结果填充一个文件范围的数组变量,这里有一个简单的代码示例来说明我的意思,有人能告诉我为什么这不起作用吗

#include <sys/types.h>
#include <dirent.h>
#include <regex.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <string.h>
#include <unistd.h>
#include <pwd.h>

static gchar *external_names;

void directories(int arraylength, gchar internal_names[][100]){
    int n;
    for (n = 0; n < arraylength; n++)
    {
        strcpy(external_names[n], internal_names[n]);
    }
    for (n = 0; n < arraylength; n++)
    {
        printf("%s internal with %s external\n",internal_names[n], external_names[n]);
    }
}

void main()
{
    gchar anotherarray[10][100];
    directories(10, anotherarray);
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
静态gchar*外部_名称;
无效目录(int arraylength,gchar内部_名称[][100]){
int n;
对于(n=0;n
[编辑]最新代码

#include <sys/types.h>
#include <dirent.h>
#include <regex.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <string.h>
#include <unistd.h>
#include <pwd.h>

static gchar *external_names[100];

void directories(int arraylength, gchar internal_names[][100]){
    int n = 0;
    //gchar external_names[arraylength][100];
    for (n = 0; n < arraylength; n++)
    {
        printf("%s %i\n","before", n);
        strcpy(external_names[n], internal_names[n]);
        printf("%s %i\n","after", n);
    }
}

void main()
{
    int n;
    gchar anotherarray[10][100];
    for (n = 0; n < 10; n++)
    {
        strcpy(anotherarray[n],"test");
    }
    directories(10, anotherarray);
    for (n = 0; n < 10; n++)
    {
        printf("%s internal with %s external\n",anotherarray[n], external_names[n]);
    }
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
静态gchar*外部_名称[100];
无效目录(int arraylength,gchar内部_名称[][100]){
int n=0;
//gchar外部_名称[排列长度][100];
对于(n=0;n
这是:

static gchar *external_names;
它只是一个单字符指针,而不是像您的
另一个数组那样的字符串数组

当您在
strcpy()
调用中建立索引时,第一个参数是
char
,这是错误的,因为
strcpy()
需要两个指针。

这是:

static gchar *external_names;  //one dimensional array.
它只是一个单字符指针,而不是像您的
另一个数组那样的字符串数组

当您在
strcpy()
调用中建立索引时,第一个参数是
char
,这是错误的,因为
strcpy()
需要两个指针

static gchar *external_names;  //one dimensional array.
外部_名称是一个一维数组,您试图从二维数组内部_名称分配它

strcpy(external_names[n], internal_names[n]);
这就是增加索引时发生的情况

&internal_names[1] =  &internal_names[0] + size_t*100
&external_names[1] =  &external_names[0] + size_t*1
为了解决这个问题,

static gchar (*external_names)[100];
应该有用

外部_名称是一个一维数组,您试图从二维数组内部_名称分配它

strcpy(external_names[n], internal_names[n]);
这就是增加索引时发生的情况

&internal_names[1] =  &internal_names[0] + size_t*100
&external_names[1] =  &external_names[0] + size_t*1
为了解决这个问题,

static gchar (*external_names)[100];

应该可以工作。

您正在通过该指针写入内存中的不确定地址;不是档案。使用C运行时库中的文件API,从、和等开始,这将有助于您入门。在为变量赋值之前,您不能使用变量的值。在赋值之前,请先使用
external_names
(在此代码中:
strcpy(external_names[n],internal_names[n]);
)。我不想写入文件,只是一个文件范围的(静态)变量,执行“strcpy(external_names[n],internal_names[n])”不将内部_名称[n]的值分配给外部数组?您正在通过该指针写入内存中的不确定地址;不是档案。使用C运行时库中的文件API,从、和等开始,这将有助于您入门。在为变量赋值之前,您不能使用变量的值。在赋值之前,请先使用
external_names
(在此代码中:
strcpy(external_names[n],internal_names[n]);
)。我不想写入文件,只是一个文件范围的(静态)变量,执行“strcpy(external_names[n],internal_names[n])”不将内部_名称[n]的值分配给外部数组?啊,好的,所以我想将其声明为静态gchar*外部_名称[];我猜?用“静态gchar*外部_名称[100];”strcpy处的代码错误(外部名称[n],内部名称[n]);由于外部数组未初始化,但如果我在块内初始化它,它似乎无法获得值,因此我在原始帖子中添加了更新的代码,以显示我mean@Mike你应该从这个问题的公认答案中得到一些答案。再次感谢sibrajas,这帮了大忙:)啊,好的,所以我想将它声明为静态gchar*外部_名称[];我猜?用“静态gchar*外部_名称[100];”strcpy处的代码错误(外部名称[n],内部名称[n]);由于外部数组未初始化,但如果我在块内初始化它,它似乎无法获得值,因此我在原始帖子中添加了更新的代码,以显示我mean@Mike你应该从这个问题的公认答案中得到一些答案。再次感谢sibrajas,这帮了大忙:)