cuốn sách gpt4 ai đã làm

C - Kết xuất lõi được phân đoạn trên strcpy()

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 05:58:42 27 4
mua khóa gpt4 Nike

Mỗi lần tôi thử chạy chức năng này, tôi nhận được một lỗi segfault.

char *hist_array[20];
int history_counter = 0;

void save_to_history(char *temp){
temp = malloc(512);/*512 là kích thước của mảng tạm thời*/
printf("temp = %s\narray = %s",temp,hist_array[history_counter]);/*debug*/
strcpy(hist_array[history_counter],temp);
printf("Đã lưu %s vào lịch sử vào %d\n\n",hist_array[history_counter],history_counter);
history_counter++;
}

Tôi không chắc liệu mình có sử dụng đúng cách hay không malloc, nhưng theo như tôi biết thì nó sẽ giúp chuyển đổi chuỗi của tôi nhiệt độ Lưu chính xác vào mảng chuỗimảng lịch sử. Hơn nữa, nhiệt độ sẽ không bao giờ NULL.

编辑 1: Đã thay đổi sizeof(temp) thành kích thước phù hợp 512, vẫn xuất hiện lỗi phân biệt.

câu trả lời hay nhất

Vấn đề nằm ở tuyên bố sau -

strcpy(hist_array[history_counter], temp);

strcpy 尝试将 nhiệt độ Bộ đệm được trỏ đến được sao chép vào hist_array[history_counter] bộ đệm được trỏ đến, nhưng char *hist_array[20]; Sẽ hist_array Được xác định là một mảng chứa 20 con trỏ ký tự. Bạn nên thay đổi chức năng của mình -

char *hist_array[20];
int history_counter = 0;

void save_to_history(char *temp) {
// +1 cho byte null kết thúc dưới dạng strlen
// không tính byte rỗng

hist_array[history_counter] = malloc(1 + strlen(temp));
if(hist_array[history_counter] == NULL) {
printf("không đủ bộ nhớ để cấp phát\n");
// xử lý nó
}
strcpy(hist_array[history_counter], temp);
printf("Đã lưu %s vào lịch sử vào %d\n\n",
hist_array[history_counter],
history_counter);

history_counter++;
}

Về C - Kết xuất lõi được phân đoạn trên strcpy(), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/22593184/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress