2017-09-19 4 views
-6

数値を表示するためにこのコードを書いています。希望する結果は、
1.name
2.name
3.name
です。 。 。構造上のCプログラムエラー

私はこのコードをコンパイルするとき、私はこれで私を助けてください、次の出力 一覧 (ヌル)一覧 (ヌル)一覧 (ヌル) を得ている、

#include <stdio.h> 
struct list 
{ 
    int a[10][10]; 
    char *name; 
}sample; 
int main() 
{ 
    for (int j = 1; j<4; j++) 
    { 
      scanf("%s",sample.name); 
      printf("List\n %s", sample.a[j][1],sample.name); 
    } 
} 
+1

を交戦コンパイラを把握するようにしてください?????? –

+0

さまざまなエラーは何ですか? –

+1

これまでのところあなたの研究/デバッグの努力をうまく示しています。まず[Ask]ページをお読みください。 –

答えて

0
printf("List\n %s", sample.a[j][1],sample.name); 
       ^-- you convert the integer to the char * here and it is the UB 


printf("Sample.a[%d][1] = %d List\n %s",j, sample.a[j][1],sample[j].name); 

別ここでは構造体が1つしかなく、char型へのポインタしかありません。

#define NAMELENGTH 100 
#define SAMPLENUM 4 

struct list 
{ 
    int a[10][10]; 
    char name[100]; 
}sample[SAMPLENUM]; 

/* ... */

 scanf("%s",sample[j].name); 
     printf("Sample[%d].a[%d][1] = %d List\n %s",j,j, sample[j].a[j][1],sample.name); 

しかしsamplesがグローバルであるとして、もちろん、あなたのテーブルだけzeoesが含まれます

+1

これはこのコードの問題の1つに過ぎません。 –

1

あなたのコンパイルは、それを修正するのに役立ちます。 のgcc -Wall file.cと

st.c:13:13: warning: format â%sâ expects argument of type âchar *â, but argument 2 has type âintâ [-Wformat=] 
      printf("List\n %s", sample.a[j][1],sample.name); 
      ^
st.c:13:13: warning: too many arguments for format [-Wformat-extra-args] 
st.c:15:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 

あなたはint型の配列を宣言したがchar配列のために使用されている%sを使って印刷している第一警告を取ることができますようにコンパイルしながら、-Wallを有効にします。 そして、あなたは%sの

サードあるsample.nameのための任意の指定与えていない:いいえ、戻り値の型

は何のエラー