QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: hobby!

Linux下的C编程程序源代码

[复制链接]
 楼主| 发表于 2004-11-22 10:08:21 | 显示全部楼层
#include <sys/types.h>

#include <stdio.h>



#define BUF_SIZE 1024



int main(void)

{

            char buf[BUF_SIZE];

            FILE *source, *backup;



            if(!(source=fopen("source.dat", "r")))

            {

                printf("Error in opening file.\n");

                       exit(1);

            }



            if(!(backup=fopen("backup.dat", "w")))

            {

                printf("Error in creating file.\n");

                       exit(1);

            }

            while(fread(buf, sizeof(buf), 1, source)==1)

            {

                if(fwrite(buf, sizeof(buf), 1,backup))

                {

                            printf("Error in wrinting file.\n");

                            exit(1);

                }

            }



            if(ferror(source)==0)

        {

                    printf("Error in reading file.\n");

                    exit(1);

        }



            if(!fclose(source))

            {

                printf("Error in close file.\n");

                exit(1);

            }

            if(fclose(backup))

        {

                printf("Error in close file.\n");

                exit(1);

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:08:42 | 显示全部楼层
#include <sys/types.h>

#include <stdio.h>



int main(void)

{

            float value, total[10];

            int count, label;

            FILE *fp;



            for(count=0; count<10; count++)

                total[count]=0;



            if(!(fp=fopen("test.dat", "r")))

            {

                printf("Error in open file.\n");

                exit(1);

            }



            while(!fscanf(fp, "%d%g", &label, &value))

            {

                total[label]+=value;

            }



            for(count=0; count<10; count++)

            {

                printf("%d: %f\n", count, total[count]);

                return 0;

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:09:25 | 显示全部楼层
#include <sys/types.h>

#include <stdarg.h>

#include <stdio.h>

int main(void)

{

            float value, total[10];

            int count, label;

            va_list ap_read, ap_write;

            FILE *fp;



            for(count=0; count<10; count++)

                total[count]=0;



            if(!(fp=fopen("test.dat", "r")))

            {

                printf("Error in open file.\n");

                exit(1);

            }



            ap_read=("&label", "&value");

            while(!fscanf(fp, "%d%g", ap_read))

            {

                total[label]+=value;

            }

   

            ap_write=("count", "total[count]");

            for(count=0; count<10; count++)

            {

                printf("%d: %f\n", ap_write);

                return 0;

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:10:49 | 显示全部楼层
#include <sys/types.h>

#include <stdarg.h>

#include <stdio.h>

int main(void)

{

            float value, total[10];

            int count, label;

            va_list ap_read, ap_write;

            FILE *fp;



            for(count=0; count<10; count++)

                total[count]=0;



            if(!(fp=fopen("test.dat", "r")))

            {

                printf("Error in open file.\n");

                exit(1);

            }



            ap_read=("&label", "&value");

            while(!fscanf(fp, "%d%g", ap_read))

            {

                total[label]+=value;

            }

   

            ap_write=("count", "total[count]");

            for(count=0; count<10; count++)

            {

                printf("%d: %f\n", ap_write);

                return 0;

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:16:51 | 显示全部楼层
#include <stdio.h>



int character;

char *token;



void lexicure(void);



int main(void)

{

            lexicure();

            while(character)

            {

                fprintf(stdout, token);

                lexicure();

             }

  

             exit(0);

}





void lexicure(void)

{

            character=getchar();

            switch(character)

            {

                case 'A'...'Z':

                            while((('A'<=character)&&('Z'>=character))|| (('0'<=character)&&('9'>=character)))

                            {

                                token+=character;

                                character=getchar();

                            }

                            if(character!=EOF)

                                ungetc(character, stdin);

                            else

                                ungetc(0, stdin);

                            break;

                case '0'...'9':

                            while(('0'<=character)&&('9'>=character))

                            {

                                token+=character;

                                character=getchar();

                            }

                            if(character!=EOF)

                                ungetc(character, stdin);

                            else

                                ungetc(0, stdin);

                            break;

        }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:23:49 | 显示全部楼层
#include <sys/types.h>

#include <stdio.h>



#define BUF_SIZE 1024



int main(void)

{

            char buf[BUF_SIZE];

            FILE *source, *backup;



            if(!(source=fopen("source.dat", "r")))

            {

                printf("Error in opening file.\n");

                       exit(1);

            }



            if(!(backup=fopen("backup.dat", "w")))

            {

                printf("Error in creating file.\n");

                       exit(1);

            }



            while(fgets(buf, sizeof(buf), source))

            {

                if(fputs(buf, backup))

                {

                            printf("Error in wrinting file.\n");

                            exit(1);

                }

            }



            if(ferror(source)==0)

        {

                    printf("Error in reading file.\n");

                    exit(1);

        }



            if(!fclose(source))

            {

                printf("Error in close file.\n");

                exit(1);

            }

            if(fclose(backup))

        {

                printf("Error in close file.\n");

                exit(1);

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:25:56 | 显示全部楼层
#include <stdio.h>

#define MAXLINE 1024

int main(void)

{

            char line[MAXLINE];

            FILE *fp;

   

            if(!(fp=tmpfile()))

            {

                printf("tempfile error");

                exit(1);

            }



            if(!fputs("This is a temp file.\n", fp))

            {

                printf("write error.\n");

                exit(1);

            }



            rewind(fp);

            if(!fgets(line, sizeof(line), fp))

            {

                printf("read error.\n");

                exit(1);

            }



            printf("%s\n", line);



            exit(0);

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:32:31 | 显示全部楼层
#include <stdio.h>

#define MAXLINE 1024

int main(void)

{

            char name[L_tmpnam], line[MAXLINE];

            FILE *fp;

   

            if(!(fp=fopen(tmpnam(name),"r+")))

            {

                printf("tempfile error");

                exit(1);

            }

            unlink(name);



            if(!fputs("This is a temp file.\n", fp))

            {

                printf("write error.\n");

                exit(1);

            }



            rewind(fp);

            if(!fgets(line, sizeof(line), fp))

            {

                printf("read error.\n");

                exit(1);

            }



            printf("%s\n", line);



            exit(0);

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:33:05 | 显示全部楼层
#include <stdio.h>

#define MAXLINE 1024

int main(void)

{

            char line[MAXLINE];

            char *name;

            FILE *fp;

   

            if(!(fp=fopen(name=tempnam("/home/stevents",NULL),"r+")))

            {

                printf("tempfile error");

                exit(1);

            }

           unlink(name);



            if(!fputs("This is a temp file.\n", fp))

            {

                printf("write error.\n");

                exit(1);

            }



            rewind(fp);

            if(!fgets(line, sizeof(line), fp))

            {

                printf("read error.\n");

                exit(1);

            }



            printf("%s\n", line);



            exit(0);

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:33:34 | 显示全部楼层
#include <stdio.h>

#include <string.h>



char *upcase(char *inputstring);



int main(void)

{

            char *str1, *str2;

   

            str1=upcase("Hello");

            str2=capitao("Goodbye");



            printf("str1=%s,str2=%s\n", str1, str2);

            return 0;

}





char *upcase(char *oldstring)

{

            int counter;

            char newstring[100];



            strcpy(newstring, oldstring);

        for(counter=0; counter<strlen(newstring); counter++)

        {

                if(newstring[counter]>=97&&newstring[counter]<=122)

                     newstring[counter]-=32;

        }

        return newstring;

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:34:57 | 显示全部楼层
#include <stdio.h>

#include <string.h>



void upcase(char *inputstring,char *newstring);



int main(void)

{

            char str1[100], str2[100];

   

            upcase("Hello" , str1);

            capitao("Goodbye", str2);



            printf("str1=%s, str2=%s\n", str1, str2);

            return 0;

}





void upcase(char *inputstring,char *newstring)

{

            int counter;



            strcpy(newstring, inputstring);

        for(counter=0; counter<strlen(newstring); counter++)

        {

                if(newstring[counter]>=97&&newstring[counter]<=122)

                             newstring[counter]-=32;

        }

        return ;

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:35:19 | 显示全部楼层
#include <stdio.h>

#include <string.h>



void upcase(char *inputstring,char *newstring);



int main(void)

{

            char str1[4], str2[4];

   

            upcase("Hello" , str1);

            capitao("Goodbye", str2);



            printf("str1=%s, str2=%s\n", str1, str2);

            return 0;

}





void upcase(char *inputstring, char *newstring)

{

            int counter;



            strncpy(newstring, inputstring,sizeof(newstring));

        for(counter=0; counter<strlen(newstring); counter++)

        {

                if(newstring[counter]>=97&&newstring[counter]<=122)

                             newstring[counter]-=32;

        }

        return ;

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:35:44 | 显示全部楼层
#include <stdio.h>

#include <string.h>



char *upcase(char *inputstring);



int main(void)

{

            char *str1, *str2;

   

            str1=upcase("Hello" );

            str2=capitao("Goodbye");



            printf("str1=%s, str2=%s\n", str1, str2);



            free(str1);

            free(str2);



            return 0;

}





char *upcase(char *inputstring)

{

            char *newstring;

            int counter;



            if(!(newstring=malloc(strlen(inputstring)+1)))

        {

                    printf("ERROR ALLOCATING MEMORY! \n");

                    exit(255);

        }

            strcpy(newstring, inputstring);

        for(counter=0; counter<strlen(newstring); counter++)

        {

                if(newstring[counter]>=97&&newstring[counter]<=122)

                             newstring[counter]-=32;

        }

        return newstring;

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:44:06 | 显示全部楼层
#include <stdio.h>

#include <stdlib.h>

#include <string.h>



#define DATASIZE 10



typedef struct stringdata

{

            char *string;

            int iscontinuing;

            struct stringdata *next;

} mydata;



mydata *append(mydata *start, char *input);

void displaydata(mydata *start);

void freedata(mydata *start);



int main(void)

{

            char input[DATASIZE];

            mydata *start=NULL;



            printf("ENTER SOME DATA,AND PRESS Ctrl+D WHEN DONE. \n");



            while(fgets(input, sizeof(input), stdin))

            {

                start=append(start, input);

            }



            displaydata(start);

            freedata(start);

            return 0;

}



mydata *append(mydata *start, char *input)

{

           mydata *cur=start, *prev=NULL, *new;



            while(cur)

            {

                prev=cur;

                cur=cur->next;

            }

            cur=prev;



            new=malloc(sizeof(mydata));

            if(!new)

            {

                printf("COULDN’T ALLOCATE MEMORY! \n");

                exit(255);

            }

   

            if(cur)

                cur->next=new;

            else

                start=new;

   

            cur=new;



        if(!(cur->string=malloc(sizeof(input)+1)))

        {

                    printf("ERROR ALLOCATING MEMORY! \n");

                    exit(255);

        }

        strcpy(cur->string, input);

        cur->iscontinuing=!(input[strlen(input)-1]=='\n'||input[strlen(input)-1]=='\r');

        cur->next=NULL;



        return start;

}





void displaydata(mydata *start)

{

            mydata *cur;

        int linecounter=0, structcounter=0;

        int newline=1;



        cur=start;

        while(cur)

        {

                    if(newline)

                        printf("LINE %d:",++linecounter);

                    structcounter++;

                    printf("%s",cur->string);

                    newline=!cur->iscontinuing;

                    cur=cur->next;

        }

        printf("THIS DATA CONTAINED %d LINES AND WAS STORED IN %d STRUCTS. \n",

        linecounter,structcounter);

}





void freedata(mydata *start)

{

            mydata *cur, *next=NULL;



            cur=start;

            while(cur)

            {

                next=cur->next;

                       free(cur->string);

                free(cur);

                cur=next;

            }

}
回复

使用道具 举报

 楼主| 发表于 2004-11-22 10:45:11 | 显示全部楼层
#include <stdio.h>

#include <stdlib.h>

#include <string.h>



#define DATASIZE 10



typedef struct stringdata

{

            char *string;

            int iscontinuing;

            struct stringdata *next;

} mydata;



mydata *append(mydata *start, char *input);

void displaydata(mydata *start);

void freedata(mydata *start);



int main(void)

{

            char input[DATASIZE];

            mydata *start=NULL;



            printf("ENTER SOME DATA,AND PRESS Ctrl+D WHEN DONE. \n");



            while(fgets(input, sizeof(input), stdin))

            {

                start=append(start, input);

            }



            displaydata(start);

            freedata(start);

            return 0;

}



mydata *append(mydata *start, char *input)

{

           mydata *cur=start, *prev=NULL, *new;



            while(cur)

            {

                prev=cur;

                cur=cur->next;

            }

            cur=prev;



            new=malloc(sizeof(mydata));

            if(!new)

            {

                printf("COULDN’T ALLOCATE MEMORY! \n");

                exit(255);

            }

   

            if(cur)

                cur->next=new;

            else

                start=new;

   

            cur=new;



        if(!(cur->string=malloc(sizeof(input)+1)))

        {

                    printf("ERROR ALLOCATING MEMORY! \n");

                    exit(255);

        }

        strcpy(cur->string, input);

        cur->iscontinuing=!(input[strlen(input)-1]=='\n'||input[strlen(input)-1]=='\r');

        cur->next=NULL;



        return start;

}





void displaydata(mydata *start)

{

            mydata *cur;

        int linecounter=0, structcounter=0;

        int newline=1;



        cur=start;

        while(cur)

        {

                    if(newline)

                        printf("LINE %d:",++linecounter);

                    structcounter++;

                    printf("%s",cur->string);

                    newline=!cur->iscontinuing;

                    cur=cur->next;

        }

        printf("THIS DATA CONTAINED %d LINES AND WAS STORED IN %d STRUCTS. \n",

        linecounter,structcounter);

}





void freedata(mydata *start)

{

            mydata *cur, *next=NULL;



            cur=start;

            while(cur)

            {

                next=cur->next;

                       free(cur->string);

                free(cur);

                cur=next;

            }

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 01:35 , Processed in 0.129739 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表