ということで、基本的にstrcpyは第2引数のアドレスを第1引数に代入するのですが、配列を第1引数にするとどうなるのでしょう?私のプログラムのように、配列のアドレスを変更しようとしましたが、残念ながらコンパイルできません。そのため、capitalize の戻り値を割り当てるために、文字ポインター変数を作成する必要がありました。私が誤解していることはありますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char string[20];
char *Capitalize(char *str)
{
int i;
char *temp;
temp = malloc(sizeof(char)*(int)(strlen(str)+1));
for(i = 0;i < strlen(str);i++)
{
if(*(str+i) >= 'a' && *(str+i)<= 'z')
*(temp+i) = *(str+i) - 32;
else
*(temp+i) = *(str+i);
}
*(temp+i) = '\0';
return temp;
}
int main(void)
{
string word;
printf("Enter word to capitalize: ");
scanf("%19s",word);
word = Capitalize(word);
printf("%s",word);
return 0;
}