在c编程中对所需长度的字符串进行标记化?

时间:2012-06-19 14:10:19

标签: c

如何将字符串(存储在fgets()函数中)标记为各种所需大小? 这些值之间没有任何分隔符(\n,,,:,:,等)。 字符串是

  

“ABCD 1234 EFG56H1.223.445.66 J”

我希望结果标记看起来像

  

“ABCD”“1234”“”/ 将空格作为角色阅读 /“EF”“56”“H”   “1.22”/ (。)点也是一个字符 /“3.44”“5.66”

如何使用strtok函数执行此操作?

这个问题实际上是使用C从PDB文件中提取ATOM记录。

2 个答案:

答案 0 :(得分:0)

我认为你不能使用strok。你需要编写自己的子串函数,但是这样的东西可以工作:

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...]

答案 1 :(得分: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);