0

fgets()文字列 (関数に格納されている) をさまざまなサイズにトークン化する方法は? 値の間に区切り文字がありません(\n,,,:,:,など)。文字列は

「ABCD1234 EFG56H1.223.445.66J」

結果のトークンは次のようになります

"ABCD" " 1234" " " /スペースを文字として読む/ "EF" "56" "H" "1.22" / (.)ドットも文字/ "3.44" "5.66"

strtok関数でこれを行う方法は?

この質問は、実際には C を使用して PDB ファイルから ATOM レコードを抽出するためのものです。

4

2 に答える 2

0

ストロークは使えないと思います。独自の部分文字列関数を作成する必要がありますが、次のようなものが機能します。

int position = 0;
int i = 0;

for (int i = 0; i < lengthOfColumnWidths; i++) {
    if (columnWidths[i] <= 0) {
        # Error, column width must be greater than 0.
    }

    char* columnVal = substring(lineOfText, position, position + columnWidths[i]);
    # store columnVal in some final array, e.g. finalArray[i] = columnVal

    position = position + columnWidths[i];
}

columnWidths は、i 番目の値が i 番目の列の幅である整数の配列です。したがって、あなたにとっては次のようになります。

[4, 5, 1, 2, 2, 1, 4, etc...]
于 2012-06-19T14:22:20.590 に答える
0

sscanf のように単純に使用できます

char a[100],b[100],c[100],d[100],e[100],f[100],g[100],h[100];
sscanf("ABCD 1234 EFG56H1.223.445.66 J","%s%s%2s%*1s%2s%1s%4s%4s%4s",a,b,c,d,e,f,g,h);
于 2012-06-19T14:38:34.263 に答える