Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
296 views
in Technique[技术] by (71.8m points)

c++ - Converting to Uppercase adds an extra letter at the end?

I'm trying to convert my char array into all uppercases. For some reason, it comes out all uppercase with an extra lowercase letter at the end. (Ex: entering "wow" would have the output "WOWw") I've tried using a for loop and incrementing 'i' with that but that doesn't work either. What's wrong with my code?

int i=0;
char c;//added these in just in case I declared it wrong
char a[80], str(50);

while (a[i])
{
    c=a[i];
    putchar (toupper(c));
    i++;
}

cout << c << endl;

EDIT: Nevermind, figured it out now. It was a stupid mistake haha.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

That is because you are explicitly outputting c after your loop is done. c holds the last character that was processed inside the loop. Simply remove that additional output, you don't need it.

while (a[i])
{
    c=a[i];
    //putchar (toupper(c));
    cout << (char) toupper(c);
    i++;
}

cout << /*c <<*/ endl; //<-- here

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...