代码应该接受数组大小和一组字符的输入,并将它们输出为大写。我的问题是当我输入一个像#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;
}
答案 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);
}