-1
#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);
}
}
をポインタになりますが使用されている多くの方法があるが、私は次のエラーを取得しています:はこのエラーを取得:割り当てはキャストなしで整数から
third.c:45:86警告:代入はポインタになりますがキャストなしの整数から[デフォルトで有効] ハッシュテーブル[k] = insertNew(temp、value); ^ third.c:88:45:警告:割り当ては、キャストのない整数からポインタを作成します。[デフォルトで有効] ハッシュテーブル[k] = insertNew(開始、値);
あなたはinsertNew()
のプロトタイプを逃している
'insertNew'が同じコンパイルユニットにある場合、型が誤っているためにコンパイラ**エラー**が発生します。リンカーはあまり厳密ではありません。 –
@WeatherVane:これはリンカー警告ではありません。 – alk
@alk私は知っています。しかし、別のコンパイル単位の関数ではエラーはありません。 –