2011-09-12 9 views
0

更新日:C、構造体、単純な抗議文法更新日

私はバグを見つけましたが、一重引用符が間違っています。二重引用符で置き換えて正常に動作しました。ご迷惑をおかけして申し訳ありませんが、すぐにそれをキャッチしました。

============================================== =============================

これは、そのデータへの構造体の宣言とアクセスどうあるべきかの簡単な例でありますが、私は、「文字定数は、そのタイプには長すぎる」とも「のprintfで引数1の通過は、キャストなしで整数からポインタを作る」ことを訴えてエラーのリストを取得します。だから、プログラムはオーバーフローのものでクラッシュします。 Nombreはファーストネーム、apellidoは姓、edadは年齢です。構造内のすべてのものを収集しようとすると、印刷結果がポインタを介してそれらにアクセスしました。 (なぜ私は単純にドット表記でポインタを通過していないそれらにアクセスする必要があるのですか?)

#include <stdio.h> 
#include <stdlib.h> 

struct estructura_amigo { 
char nombre[30]; 
char apellido[40]; 
char telefono[10]; 
int edad; 
}; 
struct estructura_amigo amigo = { 
'Juanjo', 
'Lopez', 
'592-0483', 
30 
}; 
struct estructura_amigo *p_amigo; 
int main() 
{ 
p_amigo = &amigo; 
printf('%s tiene ', p_amigo->apellido); 
printf('%i años ', p_amigo->edad); 
printf('y su teléfono es el %s.\n' , p_amigo->telefono); 
} 

答えて

3

二重引用符を使用し、この

C単一引用符で
printf("%s tiene ", p_amigo->apellido); 

=文字のように、二重引用符=文字列。

そして

printf("%s tiene " , amigo.apellido); 

、構造体へのポインタを取得する必要が動作しないはずです。

関連する問題