-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

_strupr を使用しないのはなぜですか?

_strupr(input);
于 2013-03-29T08:55:45.357 に答える
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 に答える