このコードにはいくつか問題があります
stdin を介して .txt を読み取ろうとしています。具体的には、コンパイルするための手順は次のとおりです。
g++ eda.c -o eda.exe
./eda.exe < eda.txt
.txt ファイルの内容は次のとおりです。
3
[9.3,1.2,87.9]
[1.0,1.0]
[0.0,0.0,1.0]
print v3
incr v3 v1
最初の 4 行は今は関係ありません。これらの行は getline 命令で既に読み込まれています。ということで、質問は5行目「incr ...」から始まります。
その行では、次のような出力が期待されますprint!
が、次のようになります。
print!
print!
print!
(と同じincr
)
incr
読み取って開始するコードの特定の部分print
:
char mystring [20];
注: fgets() を使用して解決しました!
これは最終的なコードです:
do {
//sscanf (mystring,"%s",str);
//int res = strncmp(str, "incr", 10);
if(mystring[0] == 'p') casenumber = 1;
else if(mystring[0] == 'i') casenumber = 2;
else if(mystring[0] == 'd' && mystring[1] == 'o') casenumber = 3;
else if(mystring[0] == 'd' && mystring[1] == 'i') casenumber = 4;
else if(mystring[0] == 'd' && mystring[1] == 'e') casenumber = 5;
switch(casenumber)
{
case 1 :
printf("print!\n" );
break;
case 2 :
printf("increase!\n");
break;
case 3 :
printf("dot!\n");
break;
case 4 :
printf("distance!\n");
break;
case 5 :
printf("decr!\n");
break;
default :
printf("casenumber value is: %d\n", casenumber);
break;
}
casenumber = 0;
} while (fgets (mystring , 21 , stdin) != NULL);