2016-10-28 18 views
0

3つのメンバ、1つのfloat、1つの文字列、および1つの短いfloat配列を含む構造体(構造体)を定義します。同じ行で、float、文字列、および配列の最初の要素の間にスペースを入れてprintfします。 私は浮動小数点数、文字列、および浮動小数点数の配列を印刷しようとしています。私は間違いを続けており、私はこの時点で脳死です。ここに私のコードです。ポインタと印刷の問題

#include <stdio.h> 
#include <string.h> 
struct Structure { 
float b; 
char c ; 
float arr[4]; 
}; 

int main (int argc, char *argv[]) 

{ 
int x[4] = {3,5,6,7}; 
int i; 
printf("This is the argument count -> %d\n",argc); 
printf("This is argv[0] %s\n",argv[0]); 
printf("This is argv[1] %s\n",argv[1]); 
for(i = 0; i<=3; i= i + 1) 
    { 
    printf("%d ",x[i]); 
} 
printf("\n"); 
int var = 20; // actual variable declaration 
int *ip;  // pointer variable declaration 

ip = &var; 

printf("Address of var variable: %p\n", &var ); 

printf("Value of *ip variable: %d\n", *ip); 

/*char izard[]="trump"; 
char *ch; 
ch = &izard; 
printf("Address of var variable: %p\n", &izard ); 

printf("Value of *ip variable: %c\n", &izard[4]); 
*/ 
struct Structure structure1; 
structure1.b = 45.4; 
strcpy(structure1.c, "Charizard"); 
strcpy(structure1.arr, "dog"); 
printf("integer : %c/n", structure1.c); 
//printstructure(&structure1); 

return 0; 
} 

/*void printstructure(struct Structure *name){ 
printf("int : %d\n", name->a); 
printf("int : %f\n", name->b); 
printf("int : %c\n", name->c); 


}*/ 
+1

あなたはほぼあります。 1つの間違い:cメンバーはcharの代わりにchar配列でなければなりません。浮動小数点型配列に文字列をコピーするなどの他のエラーがあるかもしれませんが、コンパイラはあなたの友人であり、それらを見つけるのを助けることができます。 ほとんどのgccオプションはgcc -Wall -Wextra -pedantic -std = gnu99 -Wwrite-stringsです。私がニット・ピック・モードになったら、ちょうどそれのために-Wconversionを追加します。 ;) –

答えて

0

これらの行をチェックしてください。

strcpy(structure1.c, "Charizard"); 
strcpy(structure1.arr, "dog") 

cは、文字配列でなければなりません。私はあなたが文字列から浮動小数点へコピーする理由を理解していません。

struct Structure { 
    float b; 
    char c[20] ; 
    float arr[4]; 
}; 
+0

strcpy()関数はヌル終了文字列専用です。 'strcpy(structure1.arr、" dog ")'の使い方は正しくありません。 –

0

問題が解決しました。以下のCコードをご覧ください。

#include <stdio.h> 
#include <string.h> 

struct Structure 
{ 
    float b; 
    char c ; 
    float arr[4]; 
}; 

int main (int argc, char *argv[]) 
{ 
    int x[4] = {3,5,6,7}; 
    int i; 
    printf("This is the argument count -> %d\n",argc); 
    printf("This is argv[0] %s\n",argv[0]); 
    printf("This is argv[1] %s\n",argv[1]); 
    for(i = 0; i<=3; i= i + 1) 
    { 
     printf("%d ",x[i]); 
    } 

    printf("\n"); 
    int var = 20; // actual variable declaration 
    int *ip;  // pointer variable declaration 

    ip = &var; 

    printf("Address of var variable: %p\n", &var ); 

    printf("Value of *ip variable: %d\n", *ip); 

    struct Structure structure1; 
    structure1.b = 45.4; 
    structure1.c = 'A'; 
    structure1.arr[0] = 4.4; /* rest of element required then initalize */ 
    // Error identified Reason: c member of struct which is character type 
    /* strcpy(structure1.c, "Charizard"); */ 
    // Error identified Reason: Use character array instead of float type 
    /* strcpy(structure1.arr, "dog"); */ 

    printf("integer : %c \n", structure1.c); 

    return 0; 
}