Trong khi tôi đang đặt cùng một chức năng để hoa trong C++ Tôi nhận thấy rằng tôi đã không nhận được kết quả mong muốn trong C.C chuỗi sang chữ hoa trong C và C++
hàm C++
#include <iostream>
#include <cctype>
#include <cstdio>
void strupp(char* beg)
{
while (*beg++ = std::toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
Output như mong đợi:
FOOBAR
C chức năng
#include <ctype.h>
#include <stdio.h>
#include <string.h>
void strupp(char* beg)
{
while (*beg++ = toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
Kết quả là kết quả mong đợi với ký tự đầu tiên mất tích
OOBAR
Có ai biết tại sao kết quả bị cắt khi biên dịch trong C?
Và nếu bạn thực sự muốn thực hiện điều này trong 'C++': 'std :: transform (a, a + strlen (a), a, std :: toupper); ' – PaulMcKenzie
Bạn có thể giải thích lý do tại sao bạn mong đợi điều này để chuyển đổi một chuỗi thành chữ hoa? Cụ thể, tại sao bạn mong đợi phía bên phải của '=' được đánh giá trước bên trái? –
Tôi biết ơn tất cả những người đã đưa ra phản hồi và thông tin giá trị được cung cấp –