使用getchar和putchar在c中打印行号
printing line number in c using getchar and putchar
有没有办法在只使用 putchar
和 getchar
而不使用数组的情况下在 C 中打印出行号?
输出应该是这样的。
例如输入 mink
01: mink
02: jaguar
等等
行号应该从 01
到 50
。
这是我的开始方法
#include <stdio.h>
int main() {
int c;
int counter = 1;
while ((c = getchar()) != EOF) {
putchar(c);
if (c == '\n') {
putchar(counter + '0');
putchar(':');
putchar(' ');
++counter;
}
}
return 0;
}
假设行号只有2位数字,计算并输出这些数字和:
前缀。为避免在文件开头重复代码并避免在文件结尾后为不存在的行打印行号,请在每行的第一个字符之前打印行号,即 after 如果有另一个字符则换行。将 lastc
初始化为 '\n'
确保在文件的第一行之前打印行号,如果至少有一行的话。
这是一个简单的实现:
#include <stdio.h>
int main() {
int c, lastc = '\n';
int counter = 1;
while ((c = getchar()) != EOF) {
if (lastc == '\n') {
putchar('0' + counter / 10 % 10); // tenths digit
putchar('0' + counter % 10); // units digit
putchar(':');
putchar(' ');
counter++;
}
putchar(c);
lastc = c;
}
return 0;
}
您需要除以 10 并 mod 得到 10 位和个位。
#include <stdio.h>
int main()
{
int c;
int counter=1;
putchar('0');
putchar('1');
putchar(':');
putchar(' ');
while((c=getchar())!=EOF){
putchar(c);
if ( c == '\n' ) {
++counter;
putchar(counter / 10 + '0');
putchar(counter % 10 + '0');
putchar(':');
putchar(' ');
}
}
return 0;
}
有没有办法在只使用 putchar
和 getchar
而不使用数组的情况下在 C 中打印出行号?
输出应该是这样的。
例如输入 mink
01: mink
02: jaguar
等等
行号应该从 01
到 50
。
这是我的开始方法
#include <stdio.h>
int main() {
int c;
int counter = 1;
while ((c = getchar()) != EOF) {
putchar(c);
if (c == '\n') {
putchar(counter + '0');
putchar(':');
putchar(' ');
++counter;
}
}
return 0;
}
假设行号只有2位数字,计算并输出这些数字和:
前缀。为避免在文件开头重复代码并避免在文件结尾后为不存在的行打印行号,请在每行的第一个字符之前打印行号,即 after 如果有另一个字符则换行。将 lastc
初始化为 '\n'
确保在文件的第一行之前打印行号,如果至少有一行的话。
这是一个简单的实现:
#include <stdio.h>
int main() {
int c, lastc = '\n';
int counter = 1;
while ((c = getchar()) != EOF) {
if (lastc == '\n') {
putchar('0' + counter / 10 % 10); // tenths digit
putchar('0' + counter % 10); // units digit
putchar(':');
putchar(' ');
counter++;
}
putchar(c);
lastc = c;
}
return 0;
}
您需要除以 10 并 mod 得到 10 位和个位。
#include <stdio.h>
int main()
{
int c;
int counter=1;
putchar('0');
putchar('1');
putchar(':');
putchar(' ');
while((c=getchar())!=EOF){
putchar(c);
if ( c == '\n' ) {
++counter;
putchar(counter / 10 + '0');
putchar(counter % 10 + '0');
putchar(':');
putchar(' ');
}
}
return 0;
}