I\'m using the below code to save a figure:
fig1=figure(\'visible\',\'off\');
b = bar(bar_res);
x={\'a\' ;\'b\' ;\'c\'; \'d\' ;\'e\'; \'f\' ;\'g\'; \'h\';...
Just set the x-limits with xlim:
set(gca,'XLim',[0 numel(x)+1]);
Example:
fig1 = figure('visible','on');
b = bar(randi(10,21,1).');
x = {'a' ;'b' ;'c'; 'd' ;'e'; 'f' ;'g'; 'h';...
'i'; 'j' ;'k'; 'l'; 'm'; 'n' ;'o'; 'p' ;'q' ;'r'; 's';...
't';'u'};
set(gca,'XTick',1:21);
set(gca,'XTickLabel',x);
set(gca,'XLim',[0 numel(x)+1]);
% rotateXLabels( gca, 90 );
with = char('Res with dash');
without = char('Res without dash');
legend('Reference',with,without,'Location','northwest');
set(gca,'FontSize',16);
y = ylabel('Number of trials','rot',90,'FontSize',18);

By the way, if you have Matlab R2014b or higher you don't need rotateXLabels anymore. Just use:
ax = gca;
ax.XTickLabelRotation = 90;
A simple solution may be if you call axis tight. However it may not be the result you want because it does remove the small spaces at the borders of the plot.