类型的参数" double"与" char *"类型的参数不兼容

时间:2014-05-06 23:52:22

标签: c

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

我是否可以转换buf变量以使其与strsub函数兼容?最后一次strsub电话是给我错误的电话。

薪水是double变量,bufchar[]

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);




}
}

2 个答案:

答案 0 :(得分:1)

您正在尝试将double传递给期望写入字符串的函数;这显然不起作用,你必须将那段输入字符串复制到合适的缓冲区,然后将其解析为double(使用例如strtod)。

就个人而言,这是一个非常严重的错误,在进一步讨论之前,你应该仔细阅读你的C手册。

答案 1 :(得分:-4)

您可以使用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) 

然后,您可以设置一些断点并使用步骤或下一步来观察记忆。