【发布时间】:2013-11-30 22:33:48
【问题描述】:
我对 C 很陌生,在创建以下函数时遇到了困难。我想使用此函数将静态字符数组(char string[])的单词的第一个字母大写。在我看来它看起来不错,但我遇到了一些可能非常基本的语法错误。 编译器错误:
错误:来自
const char' toconst char*' 的无效转换 初始化 `size_t strlen(const char*)' 的参数 1 分配只读位置
void Cap(char string[]){
int i;
int x = strlen(string);
for (i=1;i<x;i++){
if (isalpha(string[i]) && string[i-1] == ' '){
// only first letters of a word.
string[i]= toupper(string[i]);
}if (isalpha(string[0]))
{
string[0]=toupper(string[0]);
}
}
}
【问题讨论】:
-
如果由于
string参数的const属性而导致string[i]= toupper(string[i])没有抱怨,请获取新的编译器。该参数应该是char string[]。你想要strlen(string),而不是strlen(string[i])。并完全失去return Cap行。这是一个void函数。 -
是的,我在这一行有一个错误,只读位置的分配
标签: c arrays string function toupper