Đối với một, bạn không thể sửa đổi chuỗi chữ. Đó là hành vi không xác định.
Để khắc phục mà bạn có thể làm cho str
một mảng địa phương:
char str[] = "First string";
Bây giờ, bạn sẽ có một vấn đề thứ hai, đó là str
là không đủ lớn để giữ str2
. Vì vậy, bạn sẽ cần phải tăng chiều dài của nó. Nếu không, bạn sẽ vượt quá str
- đó cũng là hành vi không xác định.
Để khắc phục sự cố thứ hai này, bạn cần phải thực hiện str
ít nhất là miễn phí str2
. Hoặc phân bổ nó tự động:
char *str2 = "Second string";
char *str = malloc(strlen(str2) + 1); // Allocate memory
// Maybe check for NULL.
strcpy(str, str2);
// Always remember to free it.
free(str);
Có nhiều cách thanh lịch hơn khác để làm điều này liên quan đến Vlas (trong C99) và ngăn xếp phân bổ, nhưng tôi sẽ không đi vào những người như họ sử dụng là hơi có vấn đề.
Như @SangeethSaravanaraj chỉ ra trong nhận xét, mọi người bỏ lỡ #import
. Nó phải là #include
:
#include <stdio.h>
#include <string.h>
Vâng, 'strlen (str)
Mọi người đều thiếu '# import'? !! –
@SangeethSaravanaraj Vâng, tôi không thể tin được. lol Mọi người đều bỏ lỡ nó ... – Mysticial