经典编程900例(c语言)(第十四篇)

例156:计算输入的行数

#include <stdio.h>

int main(int argc, char const *argv[])
{
    char line[256];
    long line_count = 0;

	// windows输入ctrl+z结束
    while (fgets(line, sizeof(line), stdin))
        line_count++;

    printf("The number of redirected lines: %ld\n", line_count);

    return 0;
}

例157:将输入的字符串转为小写

#include <stdio.h>
#include <ctype.h>

int main(int argc, char const *argv[])
{
    int letter;

    // 读取单个字符,直到文件结束符
    for (letter = getchar(); !feof(stdin); letter = getchar())
        // tolower将大写字母转换为小写字母
        putchar(tolower(letter));

    return 0;
}

例158:无法编译

#include <stdio.h>
#include <dos.h>

int main(int argc, char const *argv[])
{
    char buffer[256];

    long row_count = 0;

    union REGS inregs, outregs;

    int ctrl_key_pressed, scancode;

    while (fgets (buffer, sizeof(buffer), stdin))
    {
        fputs (buffer, stdout);

        if ((++row_count % 24) == 0)
        {
            printf ("-- More --");
            inregs.h.ah = 0; 
            int86 (0x16, &inregs, &outregs);
            scancode = outregs.h.ah;

            ctrl_key_pressed = 0;
            inregs.h.ah = 2;
            int86 (0x16, &inregs, &outregs);


            if ((ctrl_key_pressed) && (scancode == 0x2E))
                break;
            printf ("\r");                           
        }
    }

    return 0;
}

例159:无法编译

#include <stdio.h>
#include <time.h>
#include <dos.h>

int main(int argc, char const *argv[])
{
    char buffer[256];

    char key_pressed = 0;

    long int counter = 1;

    union REGS inregs, outregs;

    time_t start_time, current_time, end_time; 

    while (fgets(buffer, sizeof(buffer), stdin))
    {
        fputs (buffer, stdout);

        if ((++counter % 25) == 0)
        {
            time (&start_time);

            end_time = start_time + 15;

            do
            {
                key_pressed = 0;
                time (&current_time);

                inregs.h.ah = 1;
                int86 (0x16, &inregs, &outregs); 

                if ((outregs.x.flags & 64) == 0)
                {                 
                    key_pressed = 1;
                    do {                    
                        inregs.h.ah = 0;
                        int86 (0x16, &inregs, &outregs);
                        inregs.h.ah = 1;
                        int86 (0x16, &inregs, &outregs);
                    } while (! (outregs.x.flags & 64)); 
                } 
            }while ((current_time != end_time) && (! key_pressed));  
        }
    }

    return 0;
}

例160:读取文件并在控制台中打印

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    char line[255];

    FILE *fp;

	// 读取程序参数文件路径
    if (fp = fopen(argv[1], "r"))
    {
        while (fgets(line, sizeof(line), fp))
        	// 在标准输出流输出
            fputs(line, stdout);
        fclose(fp);
        exit(0);
    }
    else 
    {
        printf("Cannot open %s\n", argv[1]);
        exit (1);
    }

    return 0;
}

例161:无法编译

#include <stdio.h>
#include <dos.h>

int main(int argc, char const *argv[])
{
    union REGS inregs, outregs;

    inregs.x.ax = 0x4400;
    inregs.x.bx = 0;
    intdos (&inregs, &outregs);

    if ((outregs.x.dx & 1) && (outregs.x.dx & 128))
        fprintf (stderr, "stdin has not been redirected\n");
    else
        fprintf (stderr, "stdin is redirected\n");

    inregs.x.ax = 0x4400;
    inregs.x.bx = 1;
    intdos (&inregs, &outregs);

    if ((outregs.x.dx & 2) && (outregs.x.dx & 128))
        fprintf (stderr, "stdout has not been redirected\n");
    else
        fprintf (stderr, "stdout is redirected\n");    

    return 0;
}

例162:打印用户输入的字符串并记录当前输入的第几行

#include <stdio.h>

int main(int argc, char const *argv[])
{
    char line[255];
    long line_number = 0;

    while (fgets(line, sizeof(line), stdin))
        printf("%ld %s", ++line_number, line);

    return 0;
}

例163:在标准打印机流打印

#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    char line[255];

    while (fgets(line, sizeof(line), stdin))
    {
        fputs(line, stdout);
        strcat(line, "\r");
        // stdprn是标准打印机输出流
        fputs(line, stdprn);
    }

    return 0;
}

例164:添加环境变量

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    // putenv()用来改变或增加环境变量的内容格式为name=value
    if (putenv("BOOK=Jamsa's 1001 C & C++ Tips"))
        printf("Error writing to environment\n");
    else
    {
        int i;

        for (i = 0; environ[i]; ++i)
            printf("%s\n", environ[i]);
    }
    return 0;
}

例165:读取文件并在控制台打印

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    char line[255];

    FILE *fp;

    if (fp = fopen(argv[1], "r"))
    {
        while (fgets(line, sizeof(line), fp))
        fputs(line, stdout);
        fclose(fp);

        return(0);
    }
    else 
    {
        printf("Cannot open %s\n", argv[1]);
        return(1);
    }

    return 0;
}

例166:在控制台显示程序的所有参数

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int i;

    for (i = 0; i < argc; ++i)
        printf ("argv[%d] points to %s\n", i, argv[i]);
    
    return 0;
}

例167:在控制台打印环境变量

#include <stdio.h>

int main (int argc, char *argv[], char *env[])
{
    int i;

    for (i = 0; env[i] != NULL; i++)
        printf ("env[%d] points to %s\n", i, env[i]);

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值