【发布时间】:2012-08-09 15:07:00
【问题描述】:
我想在 sh 中编写一个脚本,对于每个给定的文件,对于每个 printf 出现,它将计算 % 的数量(或者 printf 函数接收的参数数量)并将 printf 重命名为 printfX,当 X 是那个数字时。
我被卡住了,因为 printf 没有以换行结尾...
例如
printf("hello "
"world %d\n", 1);
应该返回
printf1("hello "
"world %d\n", 1);
【问题讨论】:
-
在尝试提出解决方案之前,请问您为什么要这样做?如果您想为
printf提供一个包装器,您可以使用可变参数来实现,这样您就不必编写printf1、printf2、printf3等。 -
一般来说,我想实现以下目标——对于 printf 的每个实例,我想消除格式字符串,只剩下参数的数量和参数。例如printf("hello %d %c",hello, char) => printf2(2,hello,char);
-
你怎么知道参数的类型?你会用
printf("%s %d", str, num);做什么? -
其实我打算不支持 %s (这个具体用法没问题)
-
即便如此,
printf("%d %c", num, ch);会打印出类似12 x的内容,而您无法区分两者。您是否尝试将所有内容打印为int?您更了解此用法的上下文,但我的直觉说,对于您的要求,有更好的解决方案。如果您告诉我们您为什么要这样做,我们可能会为您提供更优雅的解决方案。 ;)