2017-02-12 21 views
-1

を動作しません、それは型のパラメータ に「文字」を渡し、ポインタ変換に互換性のない整数挿入文字列私はリンクリストに文字列を挿入したい場合は、リンクされたリストに

を示し「のconstのchar *」;ラインここstrcpy(current->name,name1);

node* new_node(char name1,float num) { 
    node *current = malloc(sizeof(node)); 
    if (current == NULL) return NULL; 
    strcpy(current->name,name1); 
    current->score = num; 
    current->next = NULL; 
    return current; 
} 

struct NODE { 
    char name[40]; 
    float score; 
    struct NODE *next; 
}; 

は、いずれかがその上で私を助けてもらえコードで& [-Wint-変換] にアドレスを取る、私は検索し、多くの方法を試みたが、うまくいきませんでした。あなたの関数定義で

+1

'CHAR name1' - >'のchar * name1'(名前は文字の配列ではなく、単一 'char'です) –

+0

慧音ラスト@:私は「それをしなかったが、エラーを表示'new_node'の相反するタイプ – nas2016

+1

なぜあなたは 'NODE'(上)と' node'(下)を使用していますか? –

答えて

0

node* new_node(char name1, float num)あなたは、単一の文字を取得している、あなたがしたいことは、文字列が実際に格納されている場所へのポインタであるので、ノードに、この定義を変更* new_node(char *name1, float num)

はまた、どこの場所に変更します関数、つまりhファイルまたはこのファイルの先頭に関数を宣言している可能性があります。

+0

私が上で述べたように私は試しましたが、エラーが表示されました – nas2016

+1

また、関数が宣言されているかもしれない場所、つまり、ああファイルまたはこのファイルの冒頭に、別の賢明なコンパイルエラーのダンプを投稿しました – Pbd

+1

ああ、私が宣言した場所、ありがとう – nas2016

0

これは宿題のようです。

はとにかく、あなたのコードの宣言のような

  • 間違ったため(それが使用されている後struct NODEが宣言されている)にはいくつかの問題があります。これは実際のコードにはないかもしれませんが、そうであれば修正してください。
  • 間違ったタイプが使用されています。関数new_nodeNODEの代わりにnodeを使用しています。それ自体はコンパイラエラーをスローするはずです。
  • copy-by-valueはCの配列に対しては機能しません。この関数は、タイプcharの最初の引数をとります。 charだけをコピーしたい場合は、提案されたようにそのアドレスを取ってください。それ以外の場合は、char*

    strcpy(current->name, &name1); \\ if name1 is of type char 
    strcpy(current->name, name1); \\ if name1 is of type char* 
    
  • strcpy代わりのstrncpyを使用するタイプに変更。前者は潜在的なバッファオーバーフローを被る。

http://codepad.org/WPR5Piye

関連する問題