Skip to content

Commit 53802aa

Browse files
committed
added strchr, strlen, strcpy, strncpy and strcat implementations
0 parents  commit 53802aa

5 files changed

Lines changed: 179 additions & 0 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/bin
2+
/obj
3+
standart_string_functions.cbp
4+
standart_string_functions.layout

main.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include "string-utils.h"
2+
3+
4+
int main()
5+
{
6+
7+
char tested_string1[50];
8+
char tested_string2[50];
9+
//char* ptr = NULL;
10+
scanf( "%s", tested_string1 );
11+
//ptr = string_utils_strchr(tested_string, 'x' );
12+
string_utils_strcpy( tested_string2, tested_string1 );
13+
14+
printf( "next step\n" );
15+
printf( "\n\n" );
16+
//assert( ptr != NULL );
17+
printf( "%s", tested_string2 );
18+
19+
20+
return 0;
21+
}

standart_string_functions.depend

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# depslib dependency file v1.0
2+
1630237710 source:/home/shob/Dev/ILAB 2020-2021/standart_string_functions/string-utils.cpp
3+
"string-utils.h"
4+
5+
1630237704 /home/shob/Dev/ILAB 2020-2021/standart_string_functions/string-utils.h
6+
<stdlib.h>
7+
<stdio.h>
8+
<assert.h>
9+
<math.h>
10+
11+
1630233845 source:/home/shob/Dev/ILAB 2020-2021/standart_string_functions/main.cpp
12+
"string-utils.h"
13+

string-utils.cpp

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
#include "string-utils.h"
2+
3+
4+
char* string_utils_strchr( char* input_string, int symbol )
5+
{
6+
assert( input_string != NULL );
7+
assert( std::isfinite( symbol ) );
8+
9+
10+
char* desired_symbol_ptr = NULL;
11+
int i = 0;
12+
13+
while( input_string[i] != '\0' )
14+
{
15+
if( input_string[i] == symbol )
16+
{
17+
desired_symbol_ptr = &input_string[i];
18+
19+
assert( desired_symbol_ptr != NULL );
20+
return desired_symbol_ptr;
21+
}
22+
i++;
23+
}
24+
return NULL;
25+
}
26+
27+
28+
29+
int string_utils_strlen( char* input_string )
30+
{
31+
assert( input_string != NULL );
32+
33+
34+
int length = 0;
35+
36+
while( input_string[length] != '\0' )
37+
{
38+
length++;
39+
}
40+
41+
assert( std::isfinite( length ) );
42+
return length;
43+
}
44+
45+
46+
47+
char* string_utils_strcpy( char* destptr, char* srcptr )
48+
{
49+
assert( destptr != NULL );
50+
assert( srcptr != NULL );
51+
52+
53+
plain_copy( destptr, srcptr, 0, string_utils_strlen( srcptr ) + 1 );
54+
55+
return destptr;
56+
}
57+
58+
char* string_utils_strncpy( char* destptr, char * srcptr, int num )
59+
{
60+
assert( destptr != NULL );
61+
assert( srcptr != NULL );
62+
assert( std::isfinite( num ) );
63+
64+
65+
int max_length = 0, string_length = string_utils_strlen( destptr );
66+
if( num > string_length )
67+
{
68+
max_length = string_length;
69+
}
70+
else
71+
{
72+
max_length = num;
73+
}
74+
75+
int i = plain_copy( destptr, srcptr, 0, max_length );
76+
destptr[i+1] = '\0';
77+
78+
return destptr;
79+
}
80+
81+
82+
83+
char* strcat( char* destptr, char* srcptr )
84+
{
85+
assert( destptr != NULL );
86+
assert( srcptr != NULL );
87+
88+
89+
plain_copy( destptr, srcptr, string_utils_strlen( destptr ), string_utils_strlen( srcptr ) );
90+
91+
return destptr;
92+
}
93+
94+
95+
96+
static int plain_copy( char* destptr, char* srcptr, int startfrom, int endwhen )
97+
{
98+
assert( destptr != NULL );
99+
assert( srcptr != NULL );
100+
assert( std::isfinite( startfrom ) );
101+
102+
for( startfrom; startfrom < endwhen; startfrom++ )
103+
{
104+
destptr[startfrom] = srcptr[startfrom];
105+
}
106+
107+
return startfrom;
108+
}
109+
110+
111+
112+
char* string_utils_fgets( char* input_string, int num, FILE* filestream )
113+
{
114+
115+
}
116+
117+
118+

string-utils.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#ifndef STRING-UTILS_H_INCLUDED
2+
#define STRING-UTILS_H_INCLUDED
3+
4+
#include <stdlib.h>
5+
#include <stdio.h>
6+
#include <assert.h>
7+
#include <math.h>
8+
9+
10+
char* string_utils_strchr( char* input_string, int symbol );
11+
int string_utils_strlen( char* input_string );
12+
char* string_utils_strcpy( char * destptr, char * srcptr );
13+
char* string_utils_strncpy( char* destptr, char * srcptr, int num );
14+
char* string_utils_strcat( char * destptr, char * srcptr );
15+
char* string_utils_fgets( char* input_string, int num, FILE* filestream );
16+
/*
17+
string_utils_strdup
18+
string_utils_getline
19+
*/
20+
21+
static int plain_copy( char* destptr, char* srcptr, int startfrom, int endwhen );
22+
23+
#endif // STRING-UTILS_H_INCLUDED

0 commit comments

Comments
 (0)