如何在程序中将缓冲区字符串更改为大写?

时间:2013-03-29 08:30:03

标签: c

我在C程序中遇到问题。我已经在缓冲区中有一个字符串,并希望将字符串更改为大写,然后写入套接字或将其转换为标准输出。请在下面的代码中帮助我。

char input[] = buffer;
int  alpha_count = 0;
for (int i = 0, x = strlen(input); i < x; i++) {
  if (isalpha(input[i])) {
    if (alpha_count++ % 2 == 0 ) 
      input [i] = toupper(input[i]);
  }   
}   
printf("%s\n", input);

3 个答案:

答案 0 :(得分:1)

您的问题出在本节中:

if (isalpha(input[i])) {
  if (alpha_count++ % 2 == 0 ) 
    input [i] = toupper(input[i]);
}

您需要使用islower并仔细考虑if (alpha_count++ % 2 == 0 )的目的。这是我使用的:

#include <ctype.h>

void str_upper(char *str) {
    do {
        *str = toupper((unsigned char) *str);
    } while (*str++);
}

答案 1 :(得分:0)

您必须修改此for循环

for (int i = 0, x = strlen(input); i < x; i++) {
  if (isalpha(input[i])) {
    if (alpha_count++ % 2 == 0 ) 
      input [i] = toupper(input[i]);
  }   
} 

使用以下代码

for (int i = 0, x = strlen(input); i < x; i++) {
      input [i] = toupper(input[i]);
}

来自cplusplus.com的toupper()页:

  

int toupper(int c);

     

将小写字母转换为大写将c转换为大写   等效,如果c是小写字母并且具有大写等效字母。   如果无法进行此类转换,则返回的值将保持不变。

答案 2 :(得分:0)

为什么不使用_strupr?

_strupr(input);