-3

我在 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);
4

3 回答 3

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++);
}
于 2013-03-29T08:38:57.620 回答
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 转换为其等效的大写字母。如果不可能进行这样的转换,则返回的值是 c 不变。

于 2013-03-29T08:51:54.087 回答
0

为什么不使用_strupr?

_strupr(input);
于 2013-03-29T08:55:45.357 回答