私は実際にそのようなテキストファイルのアセンブラファイルを持っています
1 # Test case 1 for assembler
2
3 .text
4 test1: lwa $1,val1
5 prh $1
6 val12: lwa $2,val2
7 prh $2
..................
fgets を使用して各行を読み取り、「linebuffer」という名前の char バッファーに保持し、sscanf を使用して linebuffer を読み取ります。
while((fgets(linebuffer,sizeof(linebuffer),ifp)!=NULL)
{
sscanf(linebuffer,"%s%s%s%s",line[i].label,line[i].opcode,line[i].operands,line[i].comment);
......
}
そして、それらを構造体に保持したい、
struct instrucion{
char lable[8];
char opcode[4];
char opearand[15];
char comment[100];
}line[65536];
問題は、一部の列にスペースだけがなく、sscanf がスペースをスキップし、次の文字列を読み取って最初の列に保持することです。申し訳ありませんが、正確に理解できませんでしたが、誰かが理解してくれることを願っています。
たとえば、3行目はそのようにしたいです。
line[2].label=NULL
line[2].opcode=".text"
line[2].opernds=NULL
line[2].comment=NULL
4行目;
line[3].label="test1:"
line[3].opcode="lwa"
line[3].operands="$1,val1"
line[3].comment=NULL
問題は5行目から始まっています
line[4].label=NULL
line[4].opcode="prh"
line[4].operands="$1"
line[4].comment=NULL
しかし、コードを実行すると、この結果が得られます。
line[4].label="prh"
line[4].opcode="$1"
line[4].opernds=NULL
line[4].comment=NULL
このラインバッファを正しく区別するにはどうすればよいですか?