用C中的空格替换字符数组中的制表符

时间:2013-01-08 19:21:31

标签: c arrays file-io

我制作了一个小型C程序,以便我可以自动清除作业中的所有标签,并用4个空格替换它们。我在字符数组中找到带有以下函数的选项卡 -

char * tabFinder(char * fileString,int * nonNullItems)
{
    int numElements = 0;
    int run = 1;
    while(run)
    {
        while(fileString[numElements] != '\t' &&
              fileString[numElements] != '\0')
            numElements++;

        if(fileString[numElements] == '\t')
        {
            fileString = tabDestroyer(fileString,&numElements,nonNullItems);
            *nonNullItems = *nonNullItems + 3;
        } else run = 0;

    }
    fileString[*nonNullItems + 1] = '\0';
    return fileString;
}

每次找到标签时,都会将其传递给我的替代品功能tabDestroyer,如下所示:

char * tabDestroyer(char * fileString, int * indexOfTab,int * currentItems)
{
    char * tempString = malloc(*currentItems + 3);
    int index = 0,tempIndex;;

    while(index < *indexOfTab)
    {
        tempString[index] = fileString[index];
        index++;
    }   

    tempString[index++] = " ";

    tempString[index++] = " ";

    tempString[index++] = " ";

    tempString[index++] = " ";


    *currentItems = *currentItems + 3;

    while(index < *currentItems)
    {
        tempString[index] = fileString[index - 3];
        index++;
    }

    return tempString;
}

它成功查找并替换了标签,但我对其替换标签的内容存在疑问。

例如,从一个看起来像这样的文件中读取一个字符串(假装在前面有一个标签) -

        int i, numHuge, rowCount = 0;

变成了这个 -

FFFFint i, numHuge, rowCount = 0;

为什么会出现这种情况?

1 个答案:

答案 0 :(得分:2)

char * tempString;
tempString[index++] = " ";
                      ^ ^

首先,使用单引号,即' '