关于fprintf()使用出现乱码
我最近需转换一个文件中数据的格式,附上这种数据的格式如下:
128166481075232275,rsrch,1,Write,281358336,45056,94872
128166481075232718,rsrch,1,Write,281292800,65536,94430
128166481075299367,rsrch,1,Write,281227264,65536,27781
128166481075308919,rsrch,1,Write,281161728,65536,18228
128166624705595699,rsrch,1,Read,279339008,4096,122805
我自己的程序主要部分如下所示:
while((ch=fgetc(fp1))!=EOF)
{
fseek(fp1,-1,1L);
if(fgets(line,200,fp1)==NULL)
{
return (0);
}
if(sscanf(line, "%llu,%*[^,],%d,%[^,],%llu,%d,%*d\n", &startTime,&devno,flag,&blkno,&bcount))
itemcount++;
else
{
fprintf(stderr, "Wrong number of arguments for I/O trace event type\n");
fprintf(stderr, "line: %s", line);
break;
}
if(strcmp(flag,"Read")==0)
newflag=1;
else if(strcmp(flag,"Write")==0)
newflag=0;
else
printf("Unkown type of operation!\n");
fprintf(fp2,"%f %d %llu %d %x\n", startTime/10000000.0, 0, blkno/512, bcount/512, newflag);
其中的问题在于,最后一行,用fprintf向fp2指向的文件中写入格式化的数据,最后一项,用%x则可以正常写入,得到正确的文本,%d则得到乱码。newflag在程序开头处定义为int型变量。望大侠指点!