if (sDst == NULL || sSrc == NULL) return ERR_INVALID_ARGUMENT; // Validate buffer space. if (count >= lenDst) return ERR_BUFFER_OVERFLOW; // Copy and always null-terminate memcpy(sDst, sSrc, count); *(sDst + count) = '\0'; return OK; } You can change the function to s...
#include "stdafx.h" #include <iostream> using namespace std; char* mystrtok(char str[],char filter[]) { if(filter == NULL) { return str; } static char *ptr = str; static int flag = 0; if(flag == 1) { return NULL; } char* ptrReturn = ptr; for(int j = 0; ptr != '...
Does memcpy null terminateYou've told it to copy strlen (str2) number of chars, which happens to be the length of the string (the null index). Its the same as using strcpy (). What its trying to say is that if you need to copy NULL's you can use memcpy as strcpy () will ...
#include "stdafx.h" #include <iostream> using namespace std; char* mystrtok(char str[],char filter[]) { if(filter == NULL) { return str; } static char *ptr = str; static int flag = 0; if(flag == 1) { return NULL; } char* ptrReturn = ptr; for(int j = 0; ptr != '...
If you passed an invalid mode, the function would print an error message and terminate your program rather than returning a null pointer (I'm guessing the actual library version didn't do that). The book emphasized simple code over error checking. It's hard to be certain, especially given...
/* strcpy: copy t to s; array subscript version */ void strcpy(char *s, char *t) { int i; i = 0; while((s[i] = t[i]) != '\0') i ++; } For contrast, here is a version of strcpy with pointers: /* strcpy: copy t to s; pointer version 1 */ void strcpy(char *...
deli_dict) { /*this check if we allocate and fail the second time with entering this function */ if(to_free) { free(to_free); } return NULL; } if(str) { last = (char*)malloc(strlen(str)+1); if(!last) { free(deli_dict); return NULL; } to_free = last; strcpy(last, ...