如何在此代码中使用函数toupper()?

时间:2018-04-09 21:23:20

标签: c

我想把我用大写写的东西转过来。但我不知道该怎么做。 这是我的代码:

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <ctype.h>

int main(){
        char buffer[50];
        int retorno, leido, c; 
        while( (leido = read(0,&buffer,sizeof buffer)) > 0){
                retorno = write(1,&buffer,leido);
        }
        printf ("valor de retorno: %d\n", retorno);
        if (retorno<0){
                return -1;
        } 
        return 0; 
}

2 个答案:

答案 0 :(得分:0)

您需要toupper每个字符,例如

while( (leido = read(0,&buffer,sizeof buffer)) > 0){
   for (int i=0; i<leido; i++) {
      buffer[i] = toupper((unsigned char)buffer[i]);
   }
   retorno = write(1,&buffer,leido);
}

答案 1 :(得分:0)

您可以在写入函数调用之前更新缓冲区,如下所示:

char *p = buffer;
for ( ; *p; ++p) *p = toupper(*p);

确保缓冲区读取是C中的正确字符串。