シリアルポートからデータを受信するためにバッファを使用します。バッファの長さは100に固定されており、データを受信すると、このデータの長さを変数(インデックス)に格納します。
0からindex-1までのバッファに部分文字列が含まれているかどうかを確認したいと思います。
strstrとstrdupを使用してそれを実行できる可能性があることを読みましたが、これには2つの問題があります。まず、バッファから文字列を抽出する方法がわかりません。次に、1行後に文字列を削除するためだけに文字列をコピーする必要がなく、その中の部分文字列を探す方がよいでしょう。
私の変数は次のとおりです。
char output[100];
int index = 0;
char* substring;
そして、部分文字列がoutput [0:index]にある場合はtrueを返し、そうでない場合はfalseを返す関数が必要です。
どんな助けやリードも大歓迎です!
編集:私はatmel µCのコードを書いているので、それらの関数に制限されているようです。
編集2:実際には、標準のstring.hのすべての関数を使用できるようです。
編集3:依存関係を確認しました。その下には、呼び出すことができるすべての関数があります。
extern int ffs (int __val) __ATTR_CONST__;
extern int ffsl (long __val) __ATTR_CONST__;
extern int ffsll (long long __val) __ATTR_CONST__;
extern void *memccpy(void *, const void *, int, size_t);
extern void *memchr(const void *, int, size_t) __ATTR_PURE__;
extern int memcmp(const void *, const void *, size_t) __ATTR_PURE__;
extern void *memcpy(void *, const void *, size_t);
extern void *memmem(const void *, size_t, const void *, size_t) __ATTR_PURE__;
extern void *memmove(void *, const void *, size_t);
extern void *memrchr(const void *, int, size_t) __ATTR_PURE__;
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern char *strchr(const char *, int) __ATTR_PURE__;
extern char *strchrnul(const char *, int) __ATTR_PURE__;
extern int strcmp(const char *, const char *) __ATTR_PURE__;
extern char *strcpy(char *, const char *);
extern int strcasecmp(const char *, const char *) __ATTR_PURE__;
extern char *strcasestr(const char *, const char *) __ATTR_PURE__;
extern size_t strcspn(const char *__s, const char *__reject) __ATTR_PURE__;
extern char *strdup(const char *s1);
extern size_t strlcat(char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlen(const char *) __ATTR_PURE__;
extern char *strlwr(char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t) __ATTR_PURE__;
extern char *strncpy(char *, const char *, size_t);
extern int strncasecmp(const char *, const char *, size_t) __ATTR_PURE__;
extern size_t strnlen(const char *, size_t) __ATTR_PURE__;
extern char *strpbrk(const char *__s, const char *__accept) __ATTR_PURE__;
extern char *strrchr(const char *, int) __ATTR_PURE__;
extern char *strrev(char *);
extern char *strsep(char **, const char *);
extern size_t strspn(const char *__s, const char *__accept) __ATTR_PURE__;
extern char *strstr(const char *, const char *) __ATTR_PURE__;
extern char *strtok(char *, const char *);
extern char *strtok_r(char *, const char *, char **);
extern char *strupr(char *);