【C言語】sizeofをうまく使えていない?
Q&A
Closed
以下のプログラムを記述し、実行しようとしたら、コンパイル時に「Timeout」という種類のエラーに引っかかりました。実行結果ではなくコードの書き方についての質問なので、プログラムの説明等は省略します。
#include <stdio.h>
int main(){
char buf[100],str[100];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%s",str);
int count=0;
while( count < sizeof(str) / sizeof(str[0]) ){
if(str[count]=='0'){
count++;
}
}
if(10-count>0){
printf("10個まであと%d個です…\n",10-count);
}else{
printf("10個OKです!\n");
}
}
※標準入力により入力する文字列を構成する要素各々は、全て文字「0」である前提でお願いします。
while文の条件式で、count
と比較する変数をsizeof(str) / sizeof(str[0])
からint型の変数len
(=strlen(str))に変えたら正常に実行出来たので、恐らくこの部分に問題があると予想しています。しかし、「要素の個数」という見方ではsizeof
の使い方も正しいように思えて、間違いを受け入れられずにいます。sizeof(全体)/sizeof(先頭要素)
とstrlen(全体)
では、やはり考え方が異なるのでしょうか?