プラットフォーム: Linux、OSX
コンパイラ: GCC
私は現在私を混乱させている単純なプログラムを持っています-私はこの問題を引き起こすためにいくつかの異なる種類の配列/ポインターをいじっていることを知っています-それは意図的です-私はそれを理解しようとしています.
リストされているコードは期待どおりにコンパイルおよび実行されますが、 or の呼び出しで変更すると、data4
セグメンテーションエラーが発生します。その理由を理解したいと思います。strsep(&data4, "e");
data1
data3
#include <stdio.h>
#include <string.h>
int main(int c, char** v) {
char* data1 = "hello\0";
char* data2 = strdup(data1);
size_t sz = strlen(data1);
char data3[sz+1];
char* data4;
memset(data3, 0, sz+1);
data4 = strncpy(data3, data1, sz);
data4[sz] = '\0';
char* found = strsep(&data4, "e");
if (found == NULL) {
printf("nothing found\n");
} else {
printf("found e\n");
}
return 0;
}