Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.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 - Fatal编程技术网

C 类型为“的参数”;“双”字;与类型为“的参数不兼容”;字符*”;

C 类型为“的参数”;“双”字;与类型为“的参数不兼容”;字符*”;,c,C,我正在使用一个函数为某些信息创建一个结构数组。我得到了这个错误,我猜char buf[]变量就是导致错误的那个 是否有办法转换buf变量,使其与strsub函数兼容?最后一个strsub调用就是给出错误的调用 工资是一个double变量,buf是一个char[] void strsub(char buf[], char sub[], int start, int end) { int i, j; double x; for (j = 0, i = start; i <= end; i++

我正在使用一个函数为某些信息创建一个结构数组。我得到了这个错误,我猜
char buf[]
变量就是导致错误的那个

是否有办法转换
buf
变量,使其与
strsub
函数兼容?最后一个
strsub
调用就是给出错误的调用

工资是一个
double
变量,
buf
是一个
char[]

void strsub(char buf[], char sub[], int start, int end) {
int i, j;
double x;

for (j = 0, i = start; i <= end; i++, j++) {
    sub[j] = buf[i];
}
sub[j] = '\0';

while (!feof(fp)) {
    fgets(buf, MAX, fp);
    strsub(buf, dataArray[i].first, 0, 6);
    strsub(buf, dataArray[i].initial, 8, 8);
    strsub(buf, dataArray[i].last, 10, 18);
    strsub(buf, dataArray[i].street, 20, 35);
    strsub(buf, dataArray[i].city, 37, 47);
    strsub(buf, dataArray[i].state, 49, 50);
    strsub(buf, dataArray[i].zip, 52, 56);
    strsub(buf, dataArray[i].age, 58, 59);
    strsub(buf, dataArray[i].sex, 61, 61);
    strsub(buf, dataArray[i].tenure, 63, 63);
    strsub(buf, dataArray[i].salary, 65, 69);




}
}
void strsub(字符buf[],字符sub[],整数开始,整数结束){
int i,j;
双x;

对于(j=0,i=start;i您试图将一个
double
传递给一个需要写入字符串的函数;这显然不起作用,您必须将该输入字符串复制到一个合适的缓冲区,然后将其解析为
double
(使用例如
strtod


就个人而言,这是一个相当严重的错误,在继续之前,您应该仔细阅读您的C手册。

您可以使用GDB来帮助您。例如,您的程序名为demo.C

$ gcc -g -o demo demo.c
$ gdb demo

Type "apropos word" to search for commands related to "word"...
Reading symbols from demo...done.
(gdb) 

然后,您可以设置一些断点并使用step或next来观察内存。

告诉我们char buf[]是在哪里声明的。另外,您可以发布整个错误消息吗?如果最后一次调用strsub
是问题所在,我猜是
dataArray[i].salary
是一个双重标准。编辑:这似乎是问题中所说的。@uberwulu这正是我正在做的:学习。如果我没有学习,为什么我会询问某个话题?@Pahjay:是的,但这个问题表明你对C语言的理解太低,以至于你真的需要阅读教程或询问老师。看我会调查的这个。谢谢!我的教授告诉我们使用这个函数,但没有实际解释它是如何工作的。不幸的是,我正在试图弄清楚它为什么不工作。如果他不能编译它,那么他还不需要GDB。