• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 17:24
CEST 23:24
KST 06:24
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL20] Ro24 Preview Pt2: Take-Off7[ASL20] Ro24 Preview Pt1: Runway132v2 & SC: Evo Complete: Weekend Double Feature4Team Liquid Map Contest #21 - Presented by Monster Energy9uThermal's 2v2 Tour: $15,000 Main Event18
Community News
Weekly Cups (Aug 18-24): herO dethrones MaxPax6Maestros of The Game—$20k event w/ live finals in Paris34Weekly Cups (Aug 11-17): MaxPax triples again!13Weekly Cups (Aug 4-10): MaxPax wins a triple6SC2's Safe House 2 - October 18 & 195
StarCraft 2
General
BoxeR's Wings Episode 2 - Fan Translation Greatest Players of All Time: 2025 Update #1: Maru - Greatest Players of All Time A Eulogy for the Six Pool Geoff 'iNcontroL' Robinson has passed away
Tourneys
$5,000 WardiTV Summer Championship 2025 Maestros of The Game—$20k event w/ live finals in Paris $5,100+ SEL Season 2 Championship (SC: Evo) Esports World Cup 2025 Sparkling Tuna Cup - Weekly Open Tournament
Strategy
Custom Maps
External Content
Mutation # 488 What Goes Around Mutation # 487 Think Fast Mutation # 486 Watch the Skies Mutation # 485 Death from Below
Brood War
General
Post ASL20 Ro24 discussion. No Rain in ASL20? BGH Auto Balance -> http://bghmmr.eu/ How do I speak directly to Coinbase?1-(888)-419-97 Recent recommended BW games
Tourneys
[ASL20] Ro24 Group D [ASL20] Ro24 Group E Small VOD Thread 2.0 [Megathread] Daily Proleagues
Strategy
Muta micro map competition Simple Questions, Simple Answers Fighting Spirit mining rates [G] Mineral Boosting
Other Games
General Games
Stormgate/Frost Giant Megathread General RTS Discussion Thread Nintendo Switch Thread Dawn of War IV Path of Exile
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
Things Aren’t Peaceful in Palestine US Politics Mega-thread Russo-Ukrainian War Thread The year 2050 European Politico-economics QA Mega-thread
Fan Clubs
INnoVation Fan Club SKT1 Classic Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! [Manga] One Piece [\m/] Heavy Metal Thread
Sports
2024 - 2026 Football Thread Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread High temperatures on bridge(s) Gtx660 graphics card replacement
TL Community
The Automated Ban List TeamLiquid Team Shirt On Sale
Blogs
How Culture and Conflict Imp…
TrAiDoS
RTS Design in Hypercoven
a11
Evil Gacha Games and the…
ffswowsucks
INDEPENDIENTE LA CTM
XenOsky
[Girl blog} My fema…
artosisisthebest
Customize Sidebar...

Website Feedback

Closed Threads



Active: 867 users

C Programming Practice

Blogs > CecilSunkure
Post a Reply
1 2 3 4 Next All
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2012-11-02 22:32:18
November 02 2012 22:26 GMT
#1
I have a couple friends of mine who are learning to program, and I've been helping to teach them about basic uses of pointers. For some reason writing out small practice C programs is really relaxing, so I made a few different small practice programs for my friends. There's some sort of task to achieve with a little framework code written to be used. I tried to write each practice program to focus on one small aspect of pointers or memory management. I want to share them with you guys, as they might help someone and it'd be fun to share solutions.

+ Show Spoiler [PointerPractice_1.c] +
#include <stdio.h> /* printf */

/* Prints a specific element within an array. */
void PrintElement( const int *array, const int element )
{
/* Place your code here */

/**/
/**/
/**/

/* array is a variable local to only this scope.
That means you can modify the pointer array, and change
where it points to. It starts by pointing to the first
element in the stackArray from main. */
printf( "%d", *array );
}

int main( void )
{
/* Create array on the stack. */
int stackArray[] = { 1, 3, 5, 6, 7, 9, 12, 15, 19, 21, 25 };
int arraySize = sizeof( stackArray ) / sizeof( stackArray[0] );

/* Do not modify below this. */
PrintElement( stackArray, 4 );

/* Correct output:
7 */

return 0;
}

+ Show Spoiler [PointerPractice_2.c] +
#include <stdio.h> /* printf */

/* Prints a specific element within an array. */
void PrintElement(const int element)
{
printf("%d, ", element);
}

/* Prints out contents of an entire array. */
/* MODIFY ONLY THIS FUNCTION. */
void PrintArray(const int *array, const int size)
{
int x;

for (x = 0; x < size; x++)
{
PrintElement(*array);
}
}

int main(void)
{
/* Create array on the stack. */
int stackArray[] = { 1, 3, 5, 6, 7, 9, 12, 15, 19, 21, 25 };
int arraySize = sizeof(stackArray) / sizeof(stackArray[0]);

PrintArray(stackArray, arraySize);

/* Correct output:
1, 3, 5, 6, 7, 9, 12, 15, 19, 21, 25, */

return 0;
}

+ Show Spoiler [PointerPractice_3.c] +
#include <stdio.h> /* printf */

/* Modify this function's signature. A function's signature is what the function
takes as parameters and returns as a value. For this you won't modify the
the return value. */
void SwapInts( int a, int b )
{
/* Place your code here. Modify these lines. */
int temp = a;
a = b;
b = temp;
}

/* Prints a specific element within an array. */
int main(void)
{
int a = 10;
int b = 6;

/* Modify this line. */
SwapInts( a, b );

printf("%d, %d", a, b );
/* Correct output:
6, 10 */

return 0;
}

+ Show Spoiler [PointerPractice_4.c] +
#include <stdio.h> /* printf */

/* Swap the contents of two pointers. Do not modify the prototype.
Use your function from PointerPractice_3 here. */
void SwapInt( )
{
}

/* Print contents of an array. Do not modify this function. */
void PrintArray( const int* array, const int size )
{
int i;
for(i = 0; i < size; ++i, ++array)
{
if(i != size - 1)
printf( "%d, ", *array);
else
printf( "%d\n", *array);
}
}

int main( void )
{
/* Create array on the stack. */
int stackArray[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

/* Get size of array. stackArray can be treated as pointer to first element. */
int arraySize = sizeof( stackArray ) / sizeof( *stackArray );

/* Can treat name of an array as pointer to first element. */
PrintArray( stackArray, arraySize );

/* Reverse the array here */
/**/
/**/
/**/

PrintArray( stackArray, arraySize );

/* Correct output:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 */

return 0;
}

+ Show Spoiler [PointerPractice_5.c] +
#include <stdio.h> /* printf */

/* Swap the contents of two pointers. Do not modify the prototype.
Use your function from PointerPractice_3 here. */
void SwapInt( )
{
}

/* Print contents of an array. Do not modify this function. */
void PrintArray( const int* array, const int size )
{
int i;
for(i = 0; i < size; ++i, ++array)
if(i != size - 1)
printf( "%d, ", *array);
else
printf( "%d\n", *array);
}

int main( void )
{
/* Create array on the stack. */
int stackArray[] = { 23, 13, 1, 3, 5, 0, 14, 23, 1, 30, 2 };

/* Get size of array. stackArray can be treated as pointer to first element. */
int arraySize = sizeof( stackArray ) / sizeof( *stackArray );

/* Can treat name of an array as pointer to first element. */
PrintArray( stackArray, arraySize );

/* Order the array here */

/**/
/**/
/**/

/* Do not modify below this. */
PrintArray( stackArray, arraySize );

/* Correct output:
23, 13, 1, 3, 5, 0, 14, 23, 1, 30, 2
0, 1, 1, 2, 3, 5, 13, 14, 23, 23, 30 */

return 0;
}

+ Show Spoiler [Concat.c] +
#include <stdio.h> // strlen and printf
#include <stdlib.h> // malloc and free

char *ConcatStrings( const char *str1, const char *str2 )
{
/* Place your code here */

/* Starts as a string pointer to the literal "EMPTY STRING". You'll need
to use malloc to create a character array and store
the pointer malloc returns within concatenated. */
char *concatenated = "EMPTY STRING";

/**/
/**/
/**/

return concatenated;
}

int main( void )
{
const char string1[] = "Concat with me to make ";
const char string2[] = "a conjoined sentence.";

char *concatenatedString = ConcatStrings( string1, string1 );

printf( "String after concatentation: %s", concatenatedString );

return 0;
}

+ Show Spoiler [WordSort.c] +
#include <stdio.h>  /* printf, scanf  */
#include <string.h> /* strlen, strcpy */
#include <stdlib.h> /* malloc, free */

/* Grow an array. */
void GrowArray( char ***array, int size, int *capacity )
{
int i; /* for looping */
int newCapacity = (*capacity) ? *capacity * 2 : 1;

/* Allocate memory twice the size of the previous capacity.
Allocate one if the capacity is zero. Don't forget to multiply
the capacity to allocate by the size of a char * in byes. */
char **temp = (char **)malloc( newCapacity * sizeof( char * ) );

printf( " CALLED: GrowArray : size %d; *capacity %d; new capacity %d\n", size, *capacity, newCapacity);

/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

/* Update capacity to reflect size of the temp's allocation. */
*capacity = newCapacity;

/* Free the old array. */
if(*array)
free( *array );

/* Make the array point to the location we allocated. */
*array = temp;
}

/* Dynamically allocate a string, copy the contents of toCopy into it,
and then return the dynamically allocated string. */
char *CopyString( const char *toCopy )
{
char *temp = (char *)malloc( strlen( toCopy + 1 ) * sizeof( char ) );
strcpy( temp, toCopy );
return temp;
}

/* Print out a char array. */
void PrintCharArray( const char **array, int length )
{
int i;
printf( " PrintCharArray( ):\n" );
for(i = 0; i < length; ++i)
printf( " -%s\n", array[i] );
}

int main( void )
{
/* Create a pointer to character pointer with address initialized to zero. */
char **words = { 0 };
int size = 0;
int capacity = 0;
int i; /* for looping */

/* Use this to gather input. No words over length of twenty.
Initialize array to zero. */
char input[21] = { 0 };

printf( "Please enter strings followed by enter. Hit enter without a string to"
" end the program.\n" );

/* Infinite loop. */
for(;;)
{
printf( " " );
/* Get input string. */
gets( input );

/* Only add it to the array if user didn't just hit enter without
inputting a string. */
if(*input != '\0')
{
++size;

/* Grow array if we need more space. */
if(size > capacity)
GrowArray( &words, size, &capacity );

/* Copy our input string into the words array. */
words[size - 1] = CopyString( input );
}

/* While a string with '\0' (user presses enter)
in front is not found. */
else
break;
}

/* SORT THE ARRAY OF WORDS HERE IN ALPHABETICAL ORDER */
/**/
/**/
/**/

PrintCharArray( (const char**)words, size );

free( words );

return 0;
}


They should be written from easiest to hardest. I don't have solutions for all of them, but I can write one in if anyone needs to see a solution. Anyways, feel free to post up your solutions it'd be fun to share them. Also feel free to ask questions

Look for this thing to see where you code is intended to go:
/* Place your code here */
/**/
/**/
/**/


As for the next practice program I think I'll be doing something with function pointers. The last program is mimicking a C++ vector with a few loose variables, but making it into an object with structs + function pointers would be cool. Jump tables and vtables are pretty sweet and it'd be fun to mess around with them.

***
thedeadhaji *
Profile Blog Joined January 2006
39489 Posts
November 03 2012 00:22 GMT
#2
For some reason writing out small practice C programs is really relaxing


I know what you mean. I received a new tail light for my bike today, and I was going through the various modes of the device, I caught myself thinking, "man, programming the MCU to do this would be pretty fun" (fun b/c it's simple and readily rewarding)

ragnorr
Profile Joined April 2011
Denmark6097 Posts
Last Edited: 2012-11-03 01:48:22
November 03 2012 01:45 GMT
#3
i really despise coding stuff in C, but in general i preffer functional programming. most of these assignments seem fairly suited for people who havent done C tho
uberMatt
Profile Joined May 2004
Canada659 Posts
November 03 2012 02:00 GMT
#4
!dontcastmalloc

'const' in c and c++ are fundamentally different, you might want to look up the difference before writing a c tutorial
Khalum
Profile Joined September 2010
Austria831 Posts
November 03 2012 02:02 GMT
#5
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?
phar
Profile Joined August 2011
United States1080 Posts
November 03 2012 02:07 GMT
#6
On November 03 2012 11:00 uberMatt wrote:
!dontcastmalloc

'const' in c and c++ are fundamentally different, you might want to look up the difference before writing a c tutorial

Yes

http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc

But for the purposes of a teaching a first year some basic pointer stuff, it's probably ok to include ugly hack code in the parts they're not even going to be modifying.
Who after all is today speaking about the destruction of the Armenians?
uberMatt
Profile Joined May 2004
Canada659 Posts
November 03 2012 02:12 GMT
#7
On November 03 2012 11:02 Khalum wrote:
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?


well, it's especially nonsensical since the c standard defines that no action is taken if free receives a null pointer.
Khalum
Profile Joined September 2010
Austria831 Posts
Last Edited: 2012-11-03 02:16:55
November 03 2012 02:16 GMT
#8
On November 03 2012 11:12 uberMatt wrote:
Show nested quote +
On November 03 2012 11:02 Khalum wrote:
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?


well, it's especially nonsensical since the c standard defines that no action is taken if free receives a null pointer.


True!

[edit] my excuse: it's past 3am
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2012-11-03 02:36:39
November 03 2012 02:27 GMT
#9
On November 03 2012 11:02 Khalum wrote:
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?

The for loop doesn't run if the pointer is null. As for not passing null to free, I was just being explicit with how the flow of the function works.

On November 03 2012 11:00 uberMatt wrote:
!dontcastmalloc

'const' in c and c++ are fundamentally different, you might want to look up the difference before writing a c tutorial

Casting the pointer is something I've been taught to do. It's a pretty minor detail that really comes down to personal preference.
Khalum
Profile Joined September 2010
Austria831 Posts
November 03 2012 02:44 GMT
#10
On November 03 2012 11:27 CecilSunkure wrote:
[..]
The for loop doesn't run if the pointer is null. As for not passing null to free, I was just being explicit with how the flow of the function works.
[..]


What prevents me from doing this?


[..]
char **array= 0;
int capacity = 0;
GrowArray( &array, 10, &capacity );
[..]
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 03 2012 02:48 GMT
#11
On November 03 2012 11:44 Khalum wrote:
Show nested quote +
On November 03 2012 11:27 CecilSunkure wrote:
[..]
The for loop doesn't run if the pointer is null. As for not passing null to free, I was just being explicit with how the flow of the function works.
[..]


What prevents me from doing this?


[..]
char **array= 0;
int capacity = 0;
GrowArray( &array, 10, &capacity );
[..]

Right but it's assumed you don't modify the existing code unless told to. In the op I was talking about putting that stuff into a nice object making use of function pointers as an exercise.
uberMatt
Profile Joined May 2004
Canada659 Posts
November 03 2012 03:02 GMT
#12
On November 03 2012 11:27 CecilSunkure wrote:
Show nested quote +
On November 03 2012 11:02 Khalum wrote:
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?

The for loop doesn't run if the pointer is null. As for not passing null to free, I was just being explicit with how the flow of the function works.

Show nested quote +
On November 03 2012 11:00 uberMatt wrote:
!dontcastmalloc

'const' in c and c++ are fundamentally different, you might want to look up the difference before writing a c tutorial

Casting the pointer is something I've been taught to do. It's a pretty minor detail that really comes down to personal preference.


yeah, i understand. but i think that someone new to c might reasonably conclude that function arguments should be cast with the const keyword due to the code examples, not realizing that they are superfluous. i think that the first few tutorials that people do when they start programming or learning a new language have a large effect on their future thought process when writing programs, so it is important to make sure that everything is logical and does not give the wrong impression.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2012-11-03 03:18:12
November 03 2012 03:15 GMT
#13
On November 03 2012 12:02 uberMatt wrote:
Show nested quote +
On November 03 2012 11:27 CecilSunkure wrote:
On November 03 2012 11:02 Khalum wrote:
This part in wordsort.c confuses me:

[...]
/* Copy contents into temp. */
for(i = 0; i < size - 1; ++i)
{
temp[i] = (*array)[i];
}

[...]

/* Free the old array. */
if(*array)
free( *array );
[...]


The if(*array) is basically nonsense as the for loop would have crashed anyways if the array was a null pointer..?

The for loop doesn't run if the pointer is null. As for not passing null to free, I was just being explicit with how the flow of the function works.

On November 03 2012 11:00 uberMatt wrote:
!dontcastmalloc

'const' in c and c++ are fundamentally different, you might want to look up the difference before writing a c tutorial

Casting the pointer is something I've been taught to do. It's a pretty minor detail that really comes down to personal preference.

yeah, i understand. but i think that someone new to c might reasonably conclude that function arguments should be cast with the const keyword due to the code examples, not realizing that they are superfluous. i think that the first few tutorials that people do when they start programming or learning a new language have a large effect on their future thought process when writing programs, so it is important to make sure that everything is logical and does not give the wrong impression.

Ah yeah, if you want you can modify it and post it up. I can take a look a probably swap it out.
Fission
Profile Blog Joined August 2010
Canada1184 Posts
November 03 2012 03:29 GMT
#14
By the time I get done programming all day at work I am too burned out to do any personal exploration of CS related things
rabidch
Profile Joined January 2010
United States20289 Posts
November 03 2012 03:58 GMT
#15
On November 03 2012 10:45 ragnorr wrote:
i really despise coding stuff in C, but in general i preffer functional programming. most of these assignments seem fairly suited for people who havent done C tho

woo yeah functional programming!

i like C sometimes though
LiquidDota StaffOnly a true king can play the King.
snakeeyez
Profile Joined May 2011
United States1231 Posts
Last Edited: 2012-11-03 06:32:59
November 03 2012 06:32 GMT
#16
Yeah same here when you program most of the day its a little harder to sit down and program just for fun. I cant look at code outside of work really anymore. Its just too much time looking at a computer really and sitting down. It is fun though if its just a hobby kind of thing for school.
mmp
Profile Blog Joined April 2009
United States2130 Posts
November 03 2012 07:30 GMT
#17

int a[1];
int b[1][1];
int *c;
int **d;
int *e[];
int *f[0];


Okay for 100 points each, what happens at each line (what value is stored, or what error is produced)?


*a = 5;
b = &a;
*c = 5;
d = f;
e[0] = c;
f = d;
I (λ (foo) (and (<3 foo) ( T_T foo) (RAGE foo) )) Starcraft
]343[
Profile Blog Joined May 2008
United States10328 Posts
November 03 2012 09:17 GMT
#18
lol, initially for #3 I did
+ Show Spoiler +


void swapInt(int *a, int *b) {
int temp = *a;
a = b;
b = &temp;
}


but of course that didn't work for #4 (since it doesn't actually swap the contents of the pointers... though I don't think #3 made that clear.)

Also wtf in-place n log n sorting algorithms are way harder than expected [except heapsort I guess...]
Writer
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 03 2012 09:37 GMT
#19
On November 03 2012 11:27 CecilSunkure wrote:
Casting the pointer is something I've been taught to do. It's a pretty minor detail that really comes down to personal preference.


It's awesome if your compiler predates the 1989 ANSI C standard, where an entire type was invented to avoid having that cast in there.
http://en.wikipedia.org/wiki/Lysenkoism
ragnorr
Profile Joined April 2011
Denmark6097 Posts
Last Edited: 2012-11-03 11:28:27
November 03 2012 11:28 GMT
#20
On November 03 2012 18:17 ]343[ wrote:
lol, initially for #3 I did
+ Show Spoiler +


void swapInt(int *a, int *b) {
int temp = *a;
a = b;
b = &temp;
}


but of course that didn't work for #4 (since it doesn't actually swap the contents of the pointers... though I don't think #3 made that clear.)

Also wtf in-place n log n sorting algorithms are way harder than expected [except heapsort I guess...]

You aint exchanging the value the pointer points to. It should look like this
+ Show Spoiler +

void swapInt(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
1 2 3 4 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 2h 36m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
mouzHeroMarine 410
UpATreeSC 160
ProTech111
JuggernautJason82
CosmosSc2 12
StarCraft: Brood War
Calm 2731
ggaemo 238
BeSt 140
Dewaltoss 73
Aegong 29
scan(afreeca) 20
Dota 2
capcasts181
Counter-Strike
Stewie2K561
taco 501
Foxcn298
Other Games
FrodaN3746
summit1g2909
Grubby2407
Liquid`Hasu289
ViBE153
C9.Mang0118
Trikslyr82
Mew2King50
PPMD27
Organizations
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 20 non-featured ]
StarCraft 2
• StrangeGG 32
• musti20045 27
• davetesta19
• LUISG 10
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• intothetv
• Kozan
• Migwel
• LaughNgamezSOOP
StarCraft: Brood War
• iopq 1
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• WagamamaTV467
League of Legends
• Doublelift3570
• TFBlade905
Counter-Strike
• imaqtpie1251
• Shiphtur131
Upcoming Events
Replay Cast
2h 36m
LiuLi Cup
13h 36m
MaxPax vs TriGGeR
ByuN vs herO
Cure vs Rogue
Classic vs HeRoMaRinE
Cosmonarchy
18h 36m
OyAji vs Sziky
Sziky vs WolFix
WolFix vs OyAji
Big Brain Bouts
18h 36m
Iba vs GgMaChine
TriGGeR vs Bunny
Reynor vs TBD
Serral vs TBD
BSL Team Wars
21h 36m
Team Hawk vs Team Dewalt
BSL Team Wars
21h 36m
Team Hawk vs Team Bonyth
Code For Giants Cup
1d 1h
SC Evo League
1d 14h
TaeJa vs Cure
Rogue vs threepoint
ByuN vs Creator
MaNa vs Classic
Maestros of the Game
1d 18h
ShoWTimE vs Cham
GuMiho vs Ryung
Zoun vs Spirit
Rogue vs MaNa
[BSL 2025] Weekly
1d 20h
[ Show More ]
SC Evo League
2 days
Maestros of the Game
2 days
SHIN vs Creator
Astrea vs Lambo
Bunny vs SKillous
HeRoMaRinE vs TriGGeR
BSL Team Wars
2 days
Team Bonyth vs Team Sziky
BSL Team Wars
2 days
Team Dewalt vs Team Sziky
Monday Night Weeklies
3 days
Replay Cast
4 days
Sparkling Tuna Cup
4 days
LiuLi Cup
5 days
Replay Cast
6 days
The PondCast
6 days
RSL Revival
6 days
Maru vs SHIN
MaNa vs MaxPax
Liquipedia Results

Completed

CSL Season 18: Qualifier 1
uThermal 2v2 Main Event
HCC Europe

Ongoing

Copa Latinoamericana 4
BSL 20 Team Wars
KCM Race Survival 2025 Season 3
BSL 21 Qualifiers
ASL Season 20
Acropolis #4 - TS1
CSL Season 18: Qualifier 2
SEL Season 2 Championship
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1
BLAST.tv Austin Major 2025

Upcoming

CSL 2025 AUTUMN (S18)
LASL Season 20
BSL Season 21
BSL 21 Team A
Chzzk MurlocKing SC1 vs SC2 Cup #2
RSL Revival: Season 2
Maestros of the Game
EC S1
Sisters' Call Cup
Skyesports Masters 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
MESA Nomadic Masters Fall
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.