我做了一个小 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;
任何想法为什么会这样?