所以我希望通过将char的值简单添加32来将大写字符转换为小写字母,这实际上是小写字母的等价形式。尝试为指向字符的指针数组赋值时发生C++崩溃
在主我声明指针数组,并分配3个字:
int main()
{
char *dictionary[10];
dictionary[0] = "aUto";
dictionary[1] = "caR";
dictionary[2] = "Door";
int arrayCount = 3;
upperCase(dictionary, &arrayCount);
}
在功能
我尝试转换:
void upperCase(char *dictionary[], int *arrayCount)
{
cout << "In upperCase\n";
for (int i = 0; i < 3; i++)
for (int k = 0; dictionary[i][k] != '\0'; k++)
{
if (dictionary[i][k] < 97 && dictionary[i][k] > 64) // If capital is less than the value of 'a' (97)
{
dictionary[i][k] += 32;
}
else
cout << "Not a capital\n";
}
}
在字典中的程序崩溃[I] [k]的+ = 32; 我正在尝试替换字符串中的字符(它是由数组元素指向的)。即使先转换字母也不起作用。例如:字典[i] [k] ='a'; 仍然崩溃我的程序。 在windows上运行Eclipse C++
你有一个指向字符串文字的指针数组。尝试修改字符串文字会导致未定义的行为。作为一个侧面说明,编译器已经为此作业提供了'std :: tolower'。 –
标签'dynamic-arrays'不合适。 – WhiteViking
如果你只是想用'char *'来混淆一下,那就完全没问题。但是对于几乎所有在C++中正常的字符串处理,您都需要使用'std :: string'。 – WhiteViking