小编use*_*276的帖子

得到C错误:转换为请求的非标量类型

嘿我收到这个错误:

error: conversion to non-scalar type requested
Run Code Online (Sandbox Code Playgroud)

这是我的结构:

typedef struct value_t value;

struct value{
   void* x;
   int y;
   value* next;
   value* prev;
};

typedef struct key_t key;

struct key{
   int x;
   value * values;
   key* next;
   key* prev;
};
Run Code Online (Sandbox Code Playgroud)

这是给我问题的代码:

struct key new_node = (struct key) calloc(1, sizeof(struct key));
struct key* curr_node = head;

new_node.key = new_key;

struct value head_value = (struct value) calloc(1, sizeof(struct value))
Run Code Online (Sandbox Code Playgroud)

我不是想在结构上使用calloc吗?此外,我有一个我已经创建的结构,然后我想将其设置为相同结构类型的指针,但得到一个错误.这是我正在做的一个例子:

struct value x;
struct value* y = *x;
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误

error: invalid type argument …
Run Code Online (Sandbox Code Playgroud)

c struct pointers

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

将IP地址存储在变量 - 独立于Windows版本中

我环顾四周,似乎无法找到一个内部Windows版本独立的解决方案,以获取批处理文件中的计算机的IP地址.我想做的是,无论我使用的是哪台Windows机器(无论是运行7或XP还是98甚至98),我都希望能够找出ip地址并将其存储到变量中.时尚.

我可以使用ipconfig并解析出IPv4地址,但是Windows 7输出的内容与早期版本稍有不同,所以我首先要弄清楚它们的Windows版本,然后查找相应的字符串.任何帮助都会很棒!

windows batch-file ip-address

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

如何使用具有非矩形域的surf()命令绘制矩阵

我有一个矩阵Z,我想用surf命令绘制.我可以使用冲浪命令绘制它,但我希望Z的一部分不会出现在情节中.我假设我需要做的是使用符号

surf(X,Y,Z)
Run Code Online (Sandbox Code Playgroud)

其中X和Y是定义相应z值的(x,y)坐标的矩阵.我想知道的是我作为Z中不应绘制的点的(x,y)坐标,即x和y应该是什么都没有.

例如:

Z = 1 5 7
    2 6 0 
    3 0 0
    4 0 0

X = 1 1 1
    2 2 _
    3 _ _
    4 _ _

Y = 1 2 3
    1 2 _
    1 _ _
    1 _ _
Run Code Online (Sandbox Code Playgroud)

什么会在空间?我不能把数字设为0,因为所有的值都只会到原点.如果有更好的方法可以使用,我不必使用surf().

matlab plot

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

如何终止postgresql 8.3会话?

我试图在postgresql 8.3中终止会话(特定会话或所有会话,无关紧要),并且我很难做到这一点.我知道在较新版本(8.4及更高版本)中有一个pg_terminate_backend命令可以解决这个问题,但这在postgresql 8.3中不可用.如果我使用pg_stat_activity,我可以看到所有活动的会话但无法终止它们.

解决方案不一定是sql命令,但我希望它独立于正在使用的操作系统(即没有DOS/UNIX命令).

在Windows服务中停止和启动postgres服务可以很好地工作,但这是一种特定于操作系统的方法.但是,使用'pg_ctl restart -D DATA_DIR'不会停止服务.实际上,在我尝试执行此操作时,使用pg_ctl尝试重新启动服务会导致一些奇怪的行为.如果有一种方法我可以以某种方式使用pg_ctl来强制关闭进程,就像我假设windows一样,那么我可以使用它.

无论如何,我正在寻找一种方法来终止postgresql 8.3中不是特定于平台的一个或所有会话.任何帮助都会很棒!

postgresql postgresql-8.3

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

从文件中读取行并将其放入字符串数组中

我想做的是能够从文件中读取一行并将其粘贴到字符串数组中。这是我到目前为止所拥有的,但似乎不起作用。

...
char line [128];
char file [10][128];

plist = fopen("plist1.txt", "r");

while(fgets(line, sizeof line, plist) != NULL){
   file[i][0]= line;
   i++;
}
Run Code Online (Sandbox Code Playgroud)

我尝试这样做file[i][0] = *line;,并且能够打印出每行的第一个字符。这是做我想做的事情的最好方法吗?

另外,文本文件中的行数会有所不同,因此我希望数组的长度可变,而不是 10。

编辑:我尝试了下面列出的两种解决方案。两者都给我带来了处理 strcpy 或 fgets 的分段错误。

1.  while (fgets(file[i], sizeof(file[i]), plist))
       i++;

2.  while (fgets(line, sizeof(line), plist)){
       strcpy(file[i], line);
       i++;
    }
Run Code Online (Sandbox Code Playgroud)

c arrays string multidimensional-array

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