C言語文字列処理の可変文字列について
1123 ワード
, C , , 。
void change(char *str){
char *p = str;
while(*p!='\0'){
if(*p>='a' && *p<='z'){
printf("%c
",*p);
*p= *p - 'a' + 'A';
}
p++;
}
}
このコード自体には間違いはありませんが、どのように使うかも重要です.
int main()
{
char *p = "school";
printf("%s
",p);
change(p);
printf("%s
",p);
return 0;
}
最初は上のように呼び出されましたが、メモリエラーが発生し続け、理解できませんでした.
後で突然pが定数文字列を指していることを思い出して、それは修正することができなくて、静的文字列に相当して、もし修正可能な文字列になるならば、文字列に動的な記憶空間を与えて、それに可変性を持たせる必要があります.
int main()
{
char *str = (char *)malloc(sizeof(char)*50);
char *p = "school",*tempstr=str;/* p */
while(*p!=NULL){
*(tempstr++)=*p++;
}
*tempstr='\0';/* str */
printf("%s
",str);
change(str);
printf("%s
",str);
return 0;
}