#include <stdio.h>#include <string.h>#define LEN 10int main(){ char *ptr[LEN]; int i; char *test_str = "abcdefg"; for (i = 0; i < strlen(test_str); i++)/*let ptr[i] pointer to string ‘s ith position */; { ptr[i] = test_str + i; } for (i = 0; i < strlen(test_str); i++) { printf("string: %s\n", ptr[i]); }}曾經遇到一個bug,(當然不是最難除錯的,只是有意思),實際的程式碼和上面結構差不多,當時調了兩個小時,輸出的結果總是不正確,把頭叫過來給看了,說是有可能記憶體溢位了,因為當時內部呼叫了strtok這樣的函式。但是各種猜測,就是找不到真正的原因(給出的例子,因為程式碼少了很多,所以其實bug很好找了)。實際的輸出和期望的輸出如下。期望輸出為:實際輸出為:
#include <stdio.h>#include <string.h>#define LEN 10int main(){ char *ptr[LEN]; int i; char *test_str = "abcdefg"; for (i = 0; i < strlen(test_str); i++)/*let ptr[i] pointer to string ‘s ith position */; { ptr[i] = test_str + i; } for (i = 0; i < strlen(test_str); i++) { printf("string: %s\n", ptr[i]); }}曾經遇到一個bug,(當然不是最難除錯的,只是有意思),實際的程式碼和上面結構差不多,當時調了兩個小時,輸出的結果總是不正確,把頭叫過來給看了,說是有可能記憶體溢位了,因為當時內部呼叫了strtok這樣的函式。但是各種猜測,就是找不到真正的原因(給出的例子,因為程式碼少了很多,所以其實bug很好找了)。實際的輸出和期望的輸出如下。期望輸出為:實際輸出為: