C 为什么使用printf打印时输出顺序会发生变化?
我想生成这样的输出“firstname姓氏:day.month.year”,但得到的是一些混乱的顺序。我是C的新手,我不知道这里发生了什么 这就是我得到的 这是我的密码C 为什么使用printf打印时输出顺序会发生变化?,c,arrays,char,printf,C,Arrays,Char,Printf,我想生成这样的输出“firstname姓氏:day.month.year”,但得到的是一些混乱的顺序。我是C的新手,我不知道这里发生了什么 这就是我得到的 这是我的密码 char string[imax]; fgets (string, imax, team1); //wo, max count, aus welchem file int i=1, k=0; char delimiter[] = " "; char *day, *month, *year, *firstname, *surna
char string[imax];
fgets (string, imax, team1); //wo, max count, aus welchem file
int i=1, k=0;
char delimiter[] = " ";
char *day, *month, *year, *firstname, *surname;
char *stats[5];
while(fgets(string,imax,team1) != 0)
{
/*stats[0] = strtok(string,delimiter);
while(i <=4)
{
stats[i] = strtok(NULL,delimiter);
i++;
}*/
day = strtok(string,delimiter);
month = strtok(NULL,delimiter);
year = strtok(NULL,delimiter);
firstname = strtok(NULL,delimiter);
surname = strtok(NULL,delimiter);
printf("%s ", firstname);
printf("%s:", surname);
printf("%s.", day);
printf("%s.", month);
printf("%s. ", year);
}
char字符串[imax];
fgets(字符串、imax、团队1)//wo,最大计数,aus welchem文件
int i=1,k=0;
字符分隔符[]=“”;
字符*日、*月、*年、*名、*姓;
字符*stats[5];
while(fgets(字符串、imax、组1)!=0)
{
/*stats[0]=strtok(字符串,分隔符);
而(i首先,您需要在打印年份后添加换行符
printf("%s. ", year);
到
或添加
fputc( '\n', stdout );
第二件事是,在fgets()
之后,源文本文件的换行符是字符串的一部分,因此也是姓氏的一部分。您可以通过将'\n'
添加到分隔符
(如果它是在另一个系统(例如UNIX)上打开的Windows文本文件,'\r'
)来处理此问题删除\n
姓氏末尾的\n
,并在最后一个printf
语句中添加\n
,不要添加\r
;当在Windows中以文本模式打开文件时,\n\r
在程序看到它之前被转换为\n
fputc( '\n', stdout );