Skip to content

Commit 63e8875

Browse files
committed
add chapter04 part, to be continue, update cpp Makefile
1 parent 5626187 commit 63e8875

File tree

3 files changed

+62
-14
lines changed

3 files changed

+62
-14
lines changed

ebook/code/cpp/chapter04.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <stdio.h>
2+
#include <assert.h>
3+
#include <string.h>
4+
5+
char *mystrcpy(char* dest, const char *src)
6+
{
7+
assert(dest != NULL && src != NULL);
8+
assert(dest < src || strlen(src) < (unsigned int)(dest - src));
9+
if (src == dest)
10+
return dest;
11+
char *ret = dest;
12+
while('\0' != (*dest++ = *src++))
13+
;
14+
return ret;
15+
}
16+
17+
int main()
18+
{
19+
char dest[1024];
20+
char src[] = "abcdef";
21+
mystrcpy(dest, src);
22+
printf("%s\n", dest);
23+
return 0;
24+
}

ebook/code/cpp/makefile

+7-14
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
11
CC = g++
22
CPPFLAGS = -Wall
3-
all: chapter01 chapter03 chapter06 chapter25
43

4+
FILE_SUFFIX = cpp
55

6-
chapter01: chapter01.cpp
7-
$(CC) $(CPPFLAGS) chapter01.cpp -o chapter01
6+
SRCS := $(wildcard *.$(FILE_SUFFIX))
7+
EXES := $(patsubst %.$(FILE_SUFFIX),%,$(SRCS))
88

9-
chapter03: chapter03.cpp
10-
$(CC) $(CPPFLAGS) chapter03.cpp -o chapter03
9+
all:$(EXES)
1110

12-
chapter06: chapter06.cpp
13-
$(CC) $(CPPFLAGS) chapter06.cpp -o chapter06
14-
15-
chapter25: chapter25.cpp
16-
$(CC) $(CPPFLAGS) chapter25.cpp -o chapter25
11+
$(EXES): % : %.$(FILE_SUFFIX)
12+
$(CC) $(CPPFLAGS) $< -o $@
1713

1814
clean:
19-
rm chapter01
20-
rm chapter03
21-
rm chapter06
22-
rm chapter25
15+
rm -rf $(EXES)

ebook/code/python/chapter04.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
def strstr(haystack, needle):
2+
return any(
3+
all((haystack[i + j] == needle[j] for j in xrange(0, len(needle))))
4+
for i in xrange(0, len(haystack) - len(needle) + 1))
5+
6+
7+
def test_strstr():
8+
print "test_strstr"
9+
print strstr("abcdf", "cd") is True
10+
print strstr("abcdf", "ef") is False
11+
12+
13+
def find_no_repeat_char(string):
14+
maxchar = 256
15+
charlst = [0 for i in xrange(maxchar)]
16+
for c in string:
17+
charlst[ord(c)] += 1
18+
for i in xrange(0, maxchar):
19+
if charlst[i] == 1:
20+
return chr(i)
21+
22+
23+
def test_find_no_repeat_char():
24+
print "test_find_no_repeat_char"
25+
s = "abaccdeff"
26+
print find_no_repeat_char(s) is "b"
27+
28+
29+
if __name__ == "__main__":
30+
test_strstr()
31+
test_find_no_repeat_char()

0 commit comments

Comments
 (0)