我想生成一个类似于“firstname surname: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, *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);
}
编辑:我得到与我正在阅读的文件中的订单相同的订单
答案 0 :(得分:3)
首先,您需要在打印年份后添加换行符。要么改变
printf("%s. ", year);
到
printf("%s.\n ", year);
或添加
fputc( '\n', stdout );
第二件事是,在fgets()
之后,源文本文件的换行符是string
的一部分,因此是surname
的一部分。您可以通过将'\n'
添加到delimiter
(如果它是在另一个系统(例如UNIX)上打开的Windows文本文件,'\r'
)来处理此问题。