在c中用字符串大写第一个字母

时间:2013-10-26 00:14:31

标签: c string

我有问题。这个函数我需要清理任何非字母字符串,同时小写所有字母字符。使用指针p_fast检查字符串中的字符是否为isalpha;如果是,则将该字符存储到p_slow中。在整个字符串中执行此操作后,将添加\0字符以完成字符串。在此之后,我需要将字符串中的第一个字母大写为刚刚清理和小写的字母。

/**********************************************************************/
/*                      Clean up customer names                       */
/**********************************************************************/
void clean_names(int quantity,
                               struct customer *p_customer_records_start)
{
struct customer *p_customer;
char *p_fast = p_customer_records_start->customer_name,
*p_slow = p_customer_records_start->customer_name;


for(p_customer = p_customer_records_start;
     (p_customer-p_customer_records_start) < quantity; p_customer++)
{
    p_fast = p_customer->customer_name;
    p_slow = p_customer->customer_name;

while (*p_fast != END_OF_STRING)
{
    if(isalpha(*p_fast))
        *p_slow++ = tolower(*p_fast);
    p_fast++;
}

*p_slow = END_OF_STRING;

}
return;
}

我不知道如何回到字符串的开头。我在网上找不到任何东西。如果有人可以提供帮助,那就太好了!如果您需要更多信息,请询问。

2 个答案:

答案 0 :(得分:2)

您开始使用p_customer->customer_name中的指针。最后,该指针仍然指向同一位置(到名称的开头)。您可以使用它来大写第一个字母。

答案 1 :(得分:0)

非常简单:toupper每次调用仅适用于一个char。如果您这样做:

p_customer->customer_name[0]=toupper(p_customer->customer_name[0]);

仅将首字母大写。