#include <stdio.h>
#include <stdlib.h>
int main(void){
// 自分の得意な言語で
// Let's チャレンジ!!
int n;
char s[10][12];
char a[5];
int i,j;
int v1,v2;
scanf("%d",&n);
printf("%d\n",n);
for(i=0;i<n;i++){
fgets(s[i],sizeof(s[i]),stdin);
printf("%d\n",i);
printf("%s",s[i]);
}
for(i=0;i<n;i++){
if(s[i][1]=='E'){
for(j=0;a[j]!='\0';j++){
a[j] = s[i][6+j];
}
if(s[i][4]=='1') v1 = atoi(a);
else v2 = atoi(a);
}else{
for(j=0;a[j]!='\0';j++){
a[j] = s[i][4+j];
}
if(s[i][1]=='D') v2 = v1 + atoi(a);
else v2 = v1 - atoi(a);
}
}
//printf("%d %d\n",v1,v2);
return 0;
}
fgetsで文字列取得後ずれる
fgetsで文字列取得後ずれる
fgetsで文字列を入れたんですがa[0]じゃなくてa[1]から埋まっていくんですがなぜでしょうか
Re: fgetsで文字列取得後ずれる
3 ・・・・もじれつの総数
0 ・・・・配列番号
1 ・・・同上
SET 1 10 もじれつ これが0に入ってほしい
2
SET 2 20
ちなみにこれが実行結果です
0 ・・・・配列番号
1 ・・・同上
SET 1 10 もじれつ これが0に入ってほしい
2
SET 2 20
ちなみにこれが実行結果です
Re: fgetsで文字列取得後ずれる
調べたところ、過去記事に似たものを発見しました
getchar();を入れることで、
a[0]に文字列が入るときと入らない時があるのはなぜでしょうか
getchar();を入れることで、
a[0]に文字列が入るときと入らない時があるのはなぜでしょうか
Re: fgetsで文字列取得後ずれる
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void){
// 自分の得意な言語で
// Let's チャレンジ!!
char num[100];
int n;
char s[10][15];
char a[5];
int i,j;
int v1,v2;
fgets(num,sizeof(num),stdin);
n = atoi(num);
for(i=0;i<n;i++){
fgets(s,sizeof(s),stdin);
if(isupper(s[0])==0) i--;
}
for(i=0;i<n;i++){
if(s[1]=='E'){
for(j=0;a[j]!='\0';j++){
a[j] = s[6+j];
}
if(s[4]=='1') v1 = atoi(a);
else v2 = atoi(a);
}else{
for(j=0;a[j]!='\0';j++){
a[j] = s[4+j];
}
if(s[1]=='D') v2 = v1 + atoi(a);
else v2 = v1 - atoi(a);
}
}
printf("%d %d\n",v1,v2);
return 0;
}
あがいている現在の結果です
うまくいくときといかないときがあります
#include <stdlib.h>
#include <ctype.h>
int main(void){
// 自分の得意な言語で
// Let's チャレンジ!!
char num[100];
int n;
char s[10][15];
char a[5];
int i,j;
int v1,v2;
fgets(num,sizeof(num),stdin);
n = atoi(num);
for(i=0;i<n;i++){
fgets(s,sizeof(s),stdin);
if(isupper(s[0])==0) i--;
}
for(i=0;i<n;i++){
if(s[1]=='E'){
for(j=0;a[j]!='\0';j++){
a[j] = s[6+j];
}
if(s[4]=='1') v1 = atoi(a);
else v2 = atoi(a);
}else{
for(j=0;a[j]!='\0';j++){
a[j] = s[4+j];
}
if(s[1]=='D') v2 = v1 + atoi(a);
else v2 = v1 - atoi(a);
}
}
printf("%d %d\n",v1,v2);
return 0;
}
あがいている現在の結果です
うまくいくときといかないときがあります
Re: fgetsで文字列取得後ずれる
確認したところ、配列にもじれつはずれずにはいるようになりました。
しかし、計算がうまく行われないときと、うまくいくときがあります。
しかし、計算がうまく行われないときと、うまくいくときがあります。
Re: fgetsで文字列取得後ずれる
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: fgetsで文字列取得後ずれる
何を入力したときにうまくいって、shosinsha さんが書きました: しかし、計算がうまく行われないときと、うまくいくときがあります。
何を入力したときにうまくいかないのか、
具体例を1個以上挙げてください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: fgetsで文字列取得後ずれる
3 ←文字列のかず
set 1 10
set 2 20
add 40
が入力され
10 50が表示されるときとされないときがあります
fgetsを使うと配列[0]からはいってるんでしょうか?
set 1 10
set 2 20
add 40
が入力され
10 50が表示されるときとされないときがあります
fgetsを使うと配列[0]からはいってるんでしょうか?