不能通过预处理器指令将小写转换为大写字符串

fud*_*din 2 c

我做了一个程序,将小写字母转换为大写字母.我知道如何通过预处理程序指令将字符串转换为大写字母,但我不知道如何为字符串做.

#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define UPPER([])  ([]-32)
void fstring_convert(char string[]);
void main(void)
{
char string[40];
printf("Enter a string:");
gets(string);
fstring_convert(string);
printf("%s",string);
getch();
}

void fstring_convert(char string[])
{
    int i;
 for(i=0; ;i++)
 {
    if(string[i]==' ')
    {
        string[i]=string[i+1];
    }
    if(isdigit(string[i]))
    {
    string[i]+=1;
    }
    UPPER('string[i]');
    if(string[i]=='\0')
    break;
 }

}
Run Code Online (Sandbox Code Playgroud)

Bor*_*lid 6

预处理器没有循环.

因此,对于任意长度的字符串,您不能使用预处理器宏将所有字符转换为大写.

您上面的代码是错误的,因为您的宏应该如下所示:

#define TOUPPER(x) x = (x>='a' && x<='z')?(x-32):x;
Run Code Online (Sandbox Code Playgroud)

然后调用TOUPPER(string[i])你的for循环.

但我不明白宏观的重点.