Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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
获取此错误:赋值从整数生成指针而不进行强制转换 #包括 #包括 #包括 int main(int argc,字符**argv){ 结构节点*哈希表[1000000]; 结构节点*starting=NULL; 如果(argc!=2){ 返回0; } FILE*FILE=fopen(argv[1],“r”); if(file==NULL){ printf(“错误\n”); 返回0; } int j; 对于(j=0;j=0){ k=(值%1000000); }否则{ k=-(值%1000000); } 如果(用户=='i'){ if(哈希表[k]!=NULL){ 结构节点*temp=hashtable[k]; hashtable[k]=insertNew(临时值、值); }否则{ hashtable[k]=insertNew(开始,值); } }_C - Fatal编程技术网

获取此错误:赋值从整数生成指针而不进行强制转换 #包括 #包括 #包括 int main(int argc,字符**argv){ 结构节点*哈希表[1000000]; 结构节点*starting=NULL; 如果(argc!=2){ 返回0; } FILE*FILE=fopen(argv[1],“r”); if(file==NULL){ printf(“错误\n”); 返回0; } int j; 对于(j=0;j=0){ k=(值%1000000); }否则{ k=-(值%1000000); } 如果(用户=='i'){ if(哈希表[k]!=NULL){ 结构节点*temp=hashtable[k]; hashtable[k]=insertNew(临时值、值); }否则{ hashtable[k]=insertNew(开始,值); } }

获取此错误:赋值从整数生成指针而不进行强制转换 #包括 #包括 #包括 int main(int argc,字符**argv){ 结构节点*哈希表[1000000]; 结构节点*starting=NULL; 如果(argc!=2){ 返回0; } FILE*FILE=fopen(argv[1],“r”); if(file==NULL){ printf(“错误\n”); 返回0; } int j; 对于(j=0;j=0){ k=(值%1000000); }否则{ k=-(值%1000000); } 如果(用户=='i'){ if(哈希表[k]!=NULL){ 结构节点*temp=hashtable[k]; hashtable[k]=insertNew(临时值、值); }否则{ hashtable[k]=insertNew(开始,值); } },c,C,有更多的方法正在使用,但我得到以下错误: third.c:86:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(临时值、值); ^ third.c:88:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(开始,值) 我理解这意味着什么,但我不明白为什么会出现这个错误…您缺少insertNew()的原型,因此编译器假设它是一个返回int的无原型函数 您应该包含一个带有i

有更多的方法正在使用,但我得到以下错误:

third.c:86:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(临时值、值); ^ third.c:88:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(开始,值)


我理解这意味着什么,但我不明白为什么会出现这个错误…

您缺少
insertNew()
的原型,因此编译器假设它是一个返回
int
的无原型函数


您应该包含一个带有
insertNew()原型的头文件
在顶部,或者手动在文件顶部声明原型。

如果
insertNew
在同一个编译单元中,由于类型不匹配,您也会得到一个编译器错误。链接器不是那么严格。@WeatherVane:这不是链接器警告。@alk我知道。但是如果函数在不同的编译单元中,则没有错,只是说说而已。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


    int main(int argc, char** argv){
            struct Node *hashtable[1000000];
            struct Node *starting=NULL;

            if(argc!=2){
                    return 0;
            }

            FILE *file = fopen(argv[1], "r");

            if(file==NULL){
                    printf("error\n");
                    return 0;
            }

            int j;

            for(j=0; j<1000000;j++){
                    hashtable[j]=NULL;
            }

            char user;
            int value;
            int k;

            while(fscanf(file,"%c %d\n", &user, &value)==2){
                    if(value>=0){
                            k=(value%1000000);
                    }else{
                            k=-(value%1000000);
                    }

                    if(user=='i'){
                            if(hashtable[k]!=NULL){
                                    struct Node *temp=hashtable[k];
                                    hashtable[k]=insertNew(temp,value);
                            } else{
                                    hashtable[k]=insertNew(starting,value);
                            }
                    }