Из связанного ошибки в функции printf
В этом коде, когда я хочу напечатать результат, я получаю " незаконную запись, выходящую за пределы ошибки"
если входная строка короткая, она не дает ошибки.
если я удаляю идентификатор строки printf, он не дает ошибки.
Что я уже пробовал:
<pre>#define MIN3(a, b, c) ((a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c))) static void levenshtein(char *s1, char *s2) { int x, y, s1len, s2len,similarity; s1len = strlen(s1); s2len = strlen(s2); printf("string1= %s \nstring2= %s \n",s1,s2); int matrix[s2len+1][s1len+1]; matrix[0][0] = 0; for (x = 1; x <= s2len; x++) matrix[x][0] = matrix[x-1][0] + 1; for (y = 1; y <= s1len; y++) matrix[0][y] = matrix[0][y-1] + 1; for (x = 1; x <= s2len; x++) for (y = 1; y <= s1len; y++) matrix[x][y] = MIN3(matrix[x-1][y] + 1, matrix[x][y-1] + 1, matrix[x-1][y-1] + (s1[y-1] == s2[x-1] ? 0 : 1)); similarity = matrix[s2len][s1len]; printf("result = %d \n", similarity) ; }
static void recv_uc(struct unicast_conn *c, const linkaddr_t *from) { printf("Request received from %d.%d: '%s'\n", from->u8[0], from->u8[1], (char *)packetbuf_dataptr()); numberofrecv = numberofrecv + 1; struct record *n; for(n = list_head(recv_record_list); n != NULL; n = n->next) { if(n->next == NULL){ printf("last record = %s \n",n->message ); levenshtein((char *)packetbuf_dataptr(),n->message); } }
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Member 11112168
Я думаю, что проблема заключается в размере входных строк