forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			174 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			174 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#include "string.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdbool.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								size_t strlen(const char *str) {
							 | 
						||
| 
								 | 
							
									size_t size = 0;
							 | 
						||
| 
								 | 
							
									while (true) {
							 | 
						||
| 
								 | 
							
										if (str[size] == 0) {
							 | 
						||
| 
								 | 
							
											return size;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										++size;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								char *strcpy(char *destination, const char *source) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0;; ++i) {
							 | 
						||
| 
								 | 
							
										destination[i] = source[i];
							 | 
						||
| 
								 | 
							
										if (source[i] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								char *strncpy(char *destination, const char *source, size_t num) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0; i < num; ++i) {
							 | 
						||
| 
								 | 
							
										destination[i] = source[i];
							 | 
						||
| 
								 | 
							
										if (source[i] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								char *strcat(char *destination, const char *source) {
							 | 
						||
| 
								 | 
							
									size_t di = 0;
							 | 
						||
| 
								 | 
							
									while (destination[di] != 0) {
							 | 
						||
| 
								 | 
							
										++di;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									for (size_t si = 0;; ++si) {
							 | 
						||
| 
								 | 
							
										destination[di] = source[si];
							 | 
						||
| 
								 | 
							
										if (source[si] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										++di;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								char *strstr(const char *str1, const char *str2) {
							 | 
						||
| 
								 | 
							
									for (size_t i1 = 0;; ++i1) {
							 | 
						||
| 
								 | 
							
										if (str1[i1] == 0) {
							 | 
						||
| 
								 | 
							
											return NULL;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										for (size_t i2 = 0;; ++i2) {
							 | 
						||
| 
								 | 
							
											if (str2[i2] == 0) {
							 | 
						||
| 
								 | 
							
												return (char*)&str1[i1];
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if (str1[i1 + i2] != str2[i2]) {
							 | 
						||
| 
								 | 
							
												break;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int strcmp(const char *str1, const char *str2) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0;; ++i) {
							 | 
						||
| 
								 | 
							
										if (str1[i] != str2[i]) {
							 | 
						||
| 
								 | 
							
											return str1[i] - str2[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (str1[i] == 0) {
							 | 
						||
| 
								 | 
							
											return 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int strncmp(const char *str1, const char *str2, size_t num) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0; i < num; ++i) {
							 | 
						||
| 
								 | 
							
										if (str1[i] != str2[i]) {
							 | 
						||
| 
								 | 
							
											return str1[i] - str2[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (str1[i] == 0) {
							 | 
						||
| 
								 | 
							
											return 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								size_t wcslen(const wchar_t *str) {
							 | 
						||
| 
								 | 
							
									size_t size = 0;
							 | 
						||
| 
								 | 
							
									while (true) {
							 | 
						||
| 
								 | 
							
										if (str[size] == 0) {
							 | 
						||
| 
								 | 
							
											return size;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										++size;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								wchar_t *wcscpy(wchar_t *destination, const wchar_t *source) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0;; ++i) {
							 | 
						||
| 
								 | 
							
										destination[i] = source[i];
							 | 
						||
| 
								 | 
							
										if (source[i] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								wchar_t *wcsncpy(wchar_t *destination, const wchar_t *source, size_t num) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0; i < num; ++i) {
							 | 
						||
| 
								 | 
							
										destination[i] = source[i];
							 | 
						||
| 
								 | 
							
										if (source[i] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								wchar_t *wcscat(wchar_t *destination, const wchar_t *source) {
							 | 
						||
| 
								 | 
							
									size_t di = 0;
							 | 
						||
| 
								 | 
							
									while (destination[di] != 0) {
							 | 
						||
| 
								 | 
							
										++di;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									for (size_t si = 0;; ++si) {
							 | 
						||
| 
								 | 
							
										destination[di] = source[si];
							 | 
						||
| 
								 | 
							
										if (source[si] == 0) {
							 | 
						||
| 
								 | 
							
											return destination;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										++di;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return destination;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								wchar_t *wcsstr(wchar_t *str1, const wchar_t *str2) {
							 | 
						||
| 
								 | 
							
									for (size_t i1 = 0;; ++i1) {
							 | 
						||
| 
								 | 
							
										if (str1[i1] == 0) {
							 | 
						||
| 
								 | 
							
											return NULL;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										for (size_t i2 = 0;; ++i2) {
							 | 
						||
| 
								 | 
							
											if (str2[i2] == 0) {
							 | 
						||
| 
								 | 
							
												return &str1[i1];
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if (str1[i1 + i2] != str2[i2]) {
							 | 
						||
| 
								 | 
							
												break;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int wcscmp(const wchar_t *str1, const wchar_t *str2) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0;; ++i) {
							 | 
						||
| 
								 | 
							
										if (str1[i] != str2[i]) {
							 | 
						||
| 
								 | 
							
											return str1[i] - str2[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (str1[i] == 0) {
							 | 
						||
| 
								 | 
							
											return 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t num) {
							 | 
						||
| 
								 | 
							
									for (size_t i = 0; i < num; ++i) {
							 | 
						||
| 
								 | 
							
										if (str1[i] != str2[i]) {
							 | 
						||
| 
								 | 
							
											return str1[i] - str2[i];
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (str1[i] == 0) {
							 | 
						||
| 
								 | 
							
											return 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 |