与sprintf的列我有一个基本的文本文件,我点我的程序在运行,通过线等具有数行:格式化文本文件转换成以C
3 30 300 3000 30000 300000 3000000 30000000 300000000 -3 -30 -300 -3000 -30000 -300000 -3000000 -30000000 -300000000
,我需要打印出来成均匀间隔列,我希望它们适合40个字符(4列宽)。我想用sprintf函数来做到这一点。因此,基本上打印出每个数字加上2个格式的空间,并适合总共40个字符。到目前为止,这是我的。
int main(int argc, char *argv[]){
int a, b, num[1000], nums = 0;
char str[40];
FILE *pt;
int col, max, w;
if(argc < 2){
printf("Usage %s <No Files>\n", argv[0]);
return 1;
}
if((pt = fopen(argv[1], "r")) == NULL){
printf("Unable to open %s for reading.\n", argv[1]);
return 1;
}
while(fscanf(pt, "%d", &b) == 1){
num[nums++] = b;
}
w = sprintf(str, "%*d", num[a]);
if(max < w){
col = 40/(max + 2);
printf("%d %d\n", w, num[a]);
}
return 0;
}
当我将它指向上面提到的文本文件时,我只是得到垃圾。有什么建议?
像'“%* d” A符意见'需要两个参数,一个多少地方,一个是整数值。你正在提供一个。如果你不打算这样做,你应该消除'*'部分。 – tadman
为什么不使用'%40d'或'%-40d'? –
*“因此,基本上打印出每个数字[其中4个?]加上2个格式的空格,并且总共包含40个字符。”如果最长的字符串是'10-chars'(例如'-300000000' )。 '10 + 2 + 10 + 2 + 10 + 2 + 10 = 48'' –