#20
			
									
						
					
								by あたっしゅ » 6年前
			
			
			>何故 for 文を使わないといけないのかって質問でしたが、名前を探してくる[strstr]の関数を使っているのに、
>何故、for文で繰り返し処理を実行しなければいけないか、疑問でした。
>ですが皆さんのおかげで解決に向かいそうです。
  
やっと、質問者の意図が分かりました。
コード:  
  
A:		for (n = 0; n > NO; n++) {
B:			if (strstr(seiseki[n].szName, name))
C:				printf("%s 国語 %d点, 理科 %d点\n",
D:				seiseki[n].szName, seiseki[n].kokugo, seiseki[n].rika);
E:		}
 
  
B:行で strstr 関数を使ってますが、ここは、strcmp 関数を用いて
if(strcmp(seiseki[n].szName, name)==0) でないと駄目です。
http://hitorilife.com/strstr.php strstr 関数(ja)  
アセンブラで書くと
コード:  
db "A-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd 100, 0
db "B-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  90, 10
db "C-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  80, 20
db "D-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  70, 30
db "E-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略 
dd  60, 40
となるので、strstr で一気に検索することはできません。
「一単位づつ strcmp で比較」を for で回す必要があります。
 
			
							>何故 for 文を使わないといけないのかって質問でしたが、名前を探してくる[strstr]の関数を使っているのに、
>何故、for文で繰り返し処理を実行しなければいけないか、疑問でした。
>ですが皆さんのおかげで解決に向かいそうです。
  
やっと、質問者の意図が分かりました。
[code]  
A:		for (n = 0; n > NO; n++) {
B:			if (strstr(seiseki[n].szName, name))
C:				printf("%s 国語 %d点, 理科 %d点\n",
D:				seiseki[n].szName, seiseki[n].kokugo, seiseki[n].rika);
E:		}
[/code]
  
B:行で strstr 関数を使ってますが、ここは、strcmp 関数を用いて
if(strcmp(seiseki[n].szName, name)==0) でないと駄目です。
http://hitorilife.com/strstr.php strstr 関数(ja)  
アセンブラで書くと
[code]
db "A-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd 100, 0
db "B-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  90, 10
db "C-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  80, 20
db "D-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略
dd  70, 30
db "E-ko", 0, 0, 0, 0, 0, 0,.. ;; 省略 
dd  60, 40
[/code]
となるので、strstr で一気に検索することはできません。
「一単位づつ strcmp で比較」を for で回す必要があります。