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