Superku,
thanks for your help!

I used wait(1) and sometimes wait(-1) so I could see what was happening from camera location (before the player character was created.
I also try to use wait(1) in every while loop to keep from freezing the game if I made a mistake and the condition never becomes false.

I use str_cmpni in the first loop so it can match partial words.

I added the 0 to c_ignore but it didn't seem to help.

my intention with "found" is that it be zero whenever c_scan hasn't found any other entity close by.

with most of your suggested changes and a wait(-.5) this is my working code:
The main things seemed to be the VECTOR declaration and the wait which allows my action to set the ENABLE_SCAN emask.

Code:
function spawnhumans( var num )
{
	STRING* s = str_create("");
	STRING* s1 = str_create("humanspawn"); // this is the name of a model already in the compiled level
	var i;
	var found = 0;
	var sp = 0;
	var sp1 = 1;
	var temp;
	VECTOR loc;
	ENTITY* spawnpoint;

	spawnpoint = ent_next (NULL);
	if ( spawnpoint == NULL ) spawnpoint = ent_next (NULL);
	str_for_entname ( s, spawnpoint); // get the name of the entity whe just set spawnpoint to
	while( !(str_cmpni (s, s1)) ); // if the name of the ent is not "humanspawn" then its the wrong one and keep looking
	{
		spawnpoint = ent_next (spawnpoint);
		if ( spawnpoint == NULL ) spawnpoint = ent_next (NULL);
		str_for_entname ( s, spawnpoint);
		wait(1);
	}

	spawnpoint.group = 1; //

	loc.x = spawnpoint.x;
	loc.y = spawnpoint.y;
	loc.z = spawnpoint.z;
	
	for( i = 1; i <= num; i++ )
	{
		c_ignore( 1,0 );
		found = c_scan (loc, vector(0,0,1), vector(360,0,100), SCAN_ENTS | SCAN_LIMIT | IGNORE_WORLD | IGNORE_MAPS ); 

		while ( found > 0 )
		{
			vec_add( loc, vector(-100+random(200),    0,             0) );
			vec_add( loc, vector(0,                -100+random(200), 0) );
			//loc.x = loc.x+(-100+random(200));
			//loc.y = loc.y+(-100+random(200));
			
			c_ignore( 1,0 );
			found = c_scan (loc, vector(0,0,1), vector(360,0,100), SCAN_ENTS | SCAN_LIMIT | IGNORE_WORLD | IGNORE_MAPS ); 

			//wait(1);
		}

		//loc.x = i*100;
		
		if ( i == num )
		{
			player = ent_create("guy5.mdl", vector(loc.x,loc.y,loc.z), updatecharacter); 
		}else{
			ent_create("guy5.mdl", vector(loc.x,loc.y,loc.z), updatecharacter);
		}

		wait(-.5);
	}
	
	ptr_remove(s);
	ptr_remove(s1);
}