具有大写数组结果的输出空间

时间:2018-02-03 02:18:37

标签: c++ dynamic-arrays uppercase

代码应该接受数组大小和一组字符的输入,并将它们输出为大写。我的问题是当我输入一个像#34;我喜欢巧克力的句子时#34;它返回ILOVECHOCOLATE。问题是我如何抓住输入?还是我失去了其他地方的空间?

#include <iostream>
#include <cstring> 
#include <cctype>

using namespace std;
void readString(char*, int);
void changeToUpper(char*, int);
void displayString(char*, int);
int main()
{
    int arraySize;
    char* characterArray;

    cout << "Enter the size of dynamic array: ";
    cin >> arraySize;
    characterArray = new char[arraySize];
    readString(characterArray, arraySize);
    changeToUpper(characterArray, arraySize);
    displayString(characterArray, arraySize);
    delete[] characterArray;
    system("pause");


    return 0;
}
void readString(char* characterArray, int arraySize){
    cout << "Enter a string of " << arraySize << " characters to be changed:";
    for(int i= 0; i < arraySize; i++){
        cin >> characterArray[i];
    }
}
void changeToUpper(char* characterArray, int arraySize){
    for(int i = 0; i < arraySize; i++)
        characterArray[i] = toupper(characterArray[i]);
}
void displayString(char* characterArray, int arraySize){
cout << "\nYour string Upper Cased: ";
for(int i = 0; i < arraySize; i++)
    cout << characterArray[i];
    cout << endl;

}

1 个答案:

答案 0 :(得分:0)

您可以使用fgets <csdio>头文件的功能。

此功能的参数为char*length including \0以及FILE*

此功能仅由\n字符完成。您可以添加whitespace个字符。

但是当你输入一个数组大小时,最后一个字符是\n。所以你必须清除那个角色。

getc函数从FILE stream读取1个字符。通过这样做,你可以从数组大小的输入中跳过\n

所以这些代码已经改变了。

#include <cstdio>    
cin >> arraySize; getc(stdin);

void readString(char* characterArray, int arraySize){
    cout << "Enter a string of " << arraySize << " characters to be changed:";
    fgets(characterArray, arraySize, stdin);
}