Ho risolto creando una funzione che formatta ogni singolo carattere della stringa, e nemmeno inserendo il carattere "" (così non funziona!). Codice:

void format(stringa str){ //formattazione stringa
for(int j=0;j<98;j++)
str[j]=char(NULL);
}

Ma mi sembra "insana" come soluzione. Posto il codice completo.

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

typedef char stringa[100];

int iniz_mat(stringa nfile,int **&m,int &nr,int *&v_colu);
int r_count(stringa nfile);
int c_count(stringa nfile,int *&v_colu);
void vet_stamp(int *v,int n);
void format(stringa str);

int main(int argc, char *argv[])
{
int **m,nr,*v_colu; //m è la matrice che conterrà i valori prelevati dal file, nr è il numero di righe, *v_colu il vettore che per ogni riga segna il numero di colonne
stringa nfile; //nome file
strcpy(nfile,"ges.txt");
iniz_mat(nfile,m,nr,v_colu);
cout << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}

int iniz_mat(stringa nfile,int **&m,int &nr,int *&v_colu){
nr=r_count(nfile);
v_colu=new int[nr];
m=new int*[nr];
c_count(nfile,v_colu);
vet_stamp(v_colu,nr);
}

int r_count(stringa nfile){ //conta le righe
stringa app;
strcpy(app,"");
int i=0;

ifstream file(nfile);
while(!file.eof()){
file.read(app,1);
if(!strcmp(app,"\n"))
i++;
}
i++;
file.close();

return i;
}

int c_count(stringa nfile,int *&v_colu){ //conta le colonne
stringa app;
int i=0,k=0;

format(app);

fstream file(nfile,ios::in);
while(!file.eof()){
file.read(app,1);
cout << "app: " << app << endl;
if(!strcmp(app,"\n")||file.eof()){
v_colu[i]=k;
i++;
k=0;
}
else if(!strcmp(app," "))
k++;
format(app);
}
i++;
file.close();
}

void format(stringa str){ //formattazione stringa
for(int j=0;j<98;j++)
str[j]=char(NULL);
}

void vet_stamp(int *v,int n){
for(int i=0;i<n;i++)
cout << v[i] << " ";
cout << "\n";
}

Grazie ancora per l'aiuto