• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 21:34
CEST 03:34
KST 10:34
  • 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
[ASL21] Ro24 Preview Pt2: News Flash10[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy18ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book20
Community News
$5,000 WardiTV TLMC tournament - Presented by Monster Energy1GSL CK: More events planned pending crowdfunding0Weekly Cups (May 30-Apr 5): herO, Clem, SHIN win0[BSL22] RO32 Group Stage4Weekly Cups (March 23-29): herO takes triple6
StarCraft 2
General
BGE Stara Zagora 2026 cancelled Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Weekly Cups (May 30-Apr 5): herO, Clem, SHIN win Rongyi Cup S3 - Preview & Info Team Liquid Map Contest #22 - Presented by Monster Energy
Tourneys
RSL Season 4 announced for March-April $5,000 WardiTV TLMC tournament - Presented by Monster Energy Sea Duckling Open (Global, Bronze-Diamond) GSL CK: More events planned pending crowdfunding Sparkling Tuna Cup - Weekly Open Tournament
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players [M] (2) Frigid Storage
External Content
The PondCast: SC2 News & Results Mutation # 520 Moving Fees Mutation # 519 Inner Power Mutation # 518 Radiation Zone
Brood War
General
so ive been playing broodwar for a week straight. Gypsy to Korea ASL21 General Discussion Pros React To: JaeDong vs Queen [BSL22] RO32 Group Stage
Tourneys
[BSL22] RO32 Group B - Sunday 21:00 CEST [BSL22] RO32 Group A - Saturday 21:00 CEST 🌍 Weekly Foreign Showmatches [Megathread] Daily Proleagues
Strategy
Muta micro map competition Fighting Spirit mining rates What's the deal with APM & what's its true value Simple Questions, Simple Answers
Other Games
General Games
Stormgate/Frost Giant Megathread Starcraft Tabletop Miniature Game General RTS Discussion Thread Nintendo Switch Thread Darkest Dungeon
Dota 2
The Story of Wings Gaming Official 'what is Dota anymore' discussion
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine European Politico-economics QA Mega-thread Canadian Politics Mega-thread Russo-Ukrainian War Thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion Cricket [SPORT] Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Loot Boxes—Emotions, And Why…
TrAiDoS
Broowar part 2
qwaykee
Funny Nicknames
LUCKY_NOOB
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
ASL S21 English Commentary…
namkraft
Electronics
mantequilla
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1835 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
Replay Cast
00:00
WardiTV Mondays #77
CranKy Ducklings105
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
ViBE197
RuFF_SC2 164
ROOTCatZ 79
StarCraft: Brood War
GuemChi 6281
Artosis 645
Noble 24
NaDa 12
Dota 2
monkeys_forever422
capcasts138
NeuroSwarm97
League of Legends
JimRising 528
Counter-Strike
taco 436
Super Smash Bros
hungrybox397
Mew2King65
Other Games
summit1g17055
Day[9].tv452
C9.Mang0383
Maynarde123
Organizations
Other Games
gamesdonequick1186
BasetradeTV104
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 18 non-featured ]
StarCraft 2
• EnkiAlexander 53
• davetesta13
• CranKy Ducklings SOOP6
• Kozan
• sooper7s
• Migwel
• AfreecaTV YouTube
• LaughNgamezSOOP
• intothetv
• IndyKCrew
StarCraft: Brood War
• HerbMon 22
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• masondota21386
League of Legends
• Doublelift4699
Other Games
• Scarra1094
• Day9tv452
Upcoming Events
The PondCast
8h 26m
CranKy Ducklings
22h 26m
WardiTV Team League
1d 9h
Replay Cast
1d 22h
CranKy Ducklings
2 days
WardiTV Team League
2 days
uThermal 2v2 Circuit
2 days
BSL
2 days
n0maD vs perroflaco
TerrOr vs ZZZero
MadiNho vs WolFix
DragOn vs LancerX
Sparkling Tuna Cup
3 days
WardiTV Team League
3 days
[ Show More ]
OSC
3 days
BSL
3 days
Sterling vs Azhi_Dahaki
Napoleon vs Mazur
Jimin vs Nesh
spx vs Strudel
Replay Cast
3 days
Replay Cast
4 days
Wardi Open
4 days
GSL
5 days
Replay Cast
6 days
Kung Fu Cup
6 days
Replay Cast
6 days
Liquipedia Results

Completed

CSL Elite League 2026
RSL Revival: Season 4
NationLESS Cup

Ongoing

BSL Season 22
ASL Season 21
CSL 2026 SPRING (S20)
StarCraft2 Community Team League 2026 Spring
Nations Cup 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026

Upcoming

Escore Tournament S2: W2
IPSL Spring 2026
Escore Tournament S2: W3
Acropolis #4
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
RSL Revival: Season 5
WardiTV TLMC #16
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
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 © 2026 TLnet. All Rights Reserved.