• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 16:39
CEST 22:39
KST 05:39
  • 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
Team TLMC #5: Winners Announced!3[ASL20] Ro8 Preview Pt2: Holding On9Maestros of the Game: Live Finals Preview (RO4)5TL.net Map Contest #21 - Finalists4Team TLMC #5: Vote to Decide Ladder Maps!0
Community News
5.0.15 Patch Balance Hotfix (2025-10-8)60Weekly Cups (Sept 29-Oct 5): MaxPax triples up3PartinG joins SteamerZone, returns to SC2 competition275.0.15 Balance Patch Notes (Live version)119$2,500 WardiTV TL Map Contest Tournament 154
StarCraft 2
General
5.0.15 Patch Balance Hotfix (2025-10-8) PartinG joins SteamerZone, returns to SC2 competition Geoff 'iNcontroL' Robinson has passed away Classic Games #3: Rogue vs Serral at BlizzCon Team TLMC #5: Winners Announced!
Tourneys
SC2's Safe House 2 - October 18 & 19 RSL Offline Finals Dates + Ticket Sales! SC4ALL $6,000 Open LAN in Philadelphia Sparkling Tuna Cup - Weekly Open Tournament $2,500 WardiTV TL Map Contest Tournament 15
Strategy
Custom Maps
External Content
Mutation # 494 Unstable Environment Mutation # 493 Quick Killers Mutation # 492 Get Out More Mutation # 491 Night Drive
Brood War
General
Whose hotkey signature is this? Any rep analyzer that shows resources situation? BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ I'm making videos again
Tourneys
[Megathread] Daily Proleagues [ASL20] Ro8 Day 4 Small VOD Thread 2.0 [ASL20] Ro8 Day 3
Strategy
BW - ajfirecracker Strategy & Training Siegecraft - a new perspective TvZ Theorycraft - Improving on State of the Art Current Meta
Other Games
General Games
Stormgate/Frost Giant Megathread Nintendo Switch Thread ZeroSpace Megathread Dawn of War IV Path of Exile
Dota 2
Official 'what is Dota anymore' discussion LiquidDota to reintegrate into TL.net
League of Legends
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
SPIRED by.ASL Mafia {211640} TL Mafia Community Thread
Community
General
US Politics Mega-thread The Games Industry And ATVI Stop the Construction YouTube Thread Things Aren’t Peaceful in Palestine
Fan Clubs
The herO Fan Club! The Happy Fan Club!
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion MLB/Baseball 2023 NBA General Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
SC2 Client Relocalization [Change SC2 Language] Linksys AE2500 USB WIFI keeps disconnecting Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Recent Gifted Posts
Blogs
Inbreeding: Why Do We Do It…
Peanutsc
From Tilt to Ragequit:The Ps…
TrAiDoS
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1121 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
Safe House 2
18:00
Qualifier #2
ZombieGrub398
EnkiAlexander 59
LiquipediaDiscussion
[BSL 2025] Weekly
18:00
#17
ZZZero.O111
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
ZombieGrub398
Nathanias 132
Railgan 34
Vindicta 30
StarCraft: Brood War
ZZZero.O 111
Dewaltoss 100
Rock 36
Dota 2
capcasts119
LuMiX1
Counter-Strike
fl0m4046
Stewie2K323
Heroes of the Storm
Liquid`Hasu419
Khaldor354
Other Games
FrodaN2710
Grubby2521
Beastyqt693
ToD75
Trikslyr60
Organizations
Other Games
EGCTV1343
gamesdonequick970
BasetradeTV86
StarCraft 2
angryscii 28
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 20 non-featured ]
StarCraft 2
• printf 66
• Hupsaiya 38
• Airneanach19
• musti20045 11
• sooper7s
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
StarCraft: Brood War
• Michael_bg 3
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• WagamamaTV615
• Ler58
League of Legends
• Doublelift485
Other Games
• imaqtpie1213
• Shiphtur356
Upcoming Events
Sparkling Tuna Cup
13h 22m
Map Test Tournament
14h 22m
TBD vs Spirit
TBD vs herO
OSC
15h 22m
IPSL
22h 22m
Bonyth vs Art_Of_Turtle
Razz vs rasowy
Afreeca Starleague
1d 13h
Barracks vs Snow
Afreeca Starleague
2 days
Soma vs Bisu
OSC
2 days
The PondCast
4 days
OSC
4 days
CranKy Ducklings
6 days
[ Show More ]
Safe House 2
6 days
Liquipedia Results

Completed

Acropolis #4 - TS2
Maestros of the Game
HCC Europe

Ongoing

BSL 21 Points
ASL Season 20
CSL 2025 AUTUMN (S18)
C-Race Season 1
IPSL Winter 2025-26
WardiTV TLMC #15
EC S1
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025

Upcoming

SC4ALL: Brood War
BSL Season 21
BSL 21 Team A
RSL Offline Finals
RSL Revival: Season 3
Stellar Fest
SC4ALL: StarCraft II
eXTREMESLAND 2025
ESL Impact League Season 8
SL Budapest Major 2025
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 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.