【发布时间】:2015-03-17 02:21:56
【问题描述】:
这是我目前所拥有的:
while ((currentChar != '\0') && (i < (length - 1)))
{
if (isalnum(*currentChar))
{
foundAlphaNum = 1;
}
if (*currentChar != ' ' && *currentChar != '\t' && *currentChar !='\n' && foundAlphaNum)
{
modifiedString[i] = *currentChar;
i++;
}
else if ((*currentChar == ' ' || *currentChar == '\t') && !foundAlphaNum)
{
modifiedString[i] = *currentChar;
i++;
}
else if(*currentChar == '\n')
{
modifiedString[i] = *currentChar;
i++;
foundAlphaNum = 0;
}
currentChar++;
}
// add null terminating char (maybe...)
modifiedString[i] = '\0';
printf("%s\n", modifiedString);
这是我的输出:
" HelloLbaldkgabcdefghijklmnopqrstuvwxyz0123456789
helluhworldzguhmornings
hhulsuhfhdjfue12345678910morealphabettseee"
它应该在第一个字母出现之前留下任何空白,它在第一行执行,但在其他行删除它们。
我尝试将其重置为 0,但它给了我一个分段错误核心转储
【问题讨论】:
-
当您发现换行符时将
foundAlphaNum重置为零将是一个明显的解决方法... -
你检查过函数 isspace() 吗?
-
我无法将“foundAlphaNum”重置为零。要么我得到一个分段错误核心转储,要么它对我没有任何作用。或者,也许我正在完全错误地重置“foundAlphaNum”。我该怎么办?
-
对不起,这是什么意思?
标签: c segmentation-fault whitespace removing-whitespace