c程序 大家帮忙一定要按要求不然没用的

1. 从键盘输入若干行字符(每行长度不等),输入后将他们存储到一磁盘文件中(比如 D:\data\string.txt, 最好在最后的盘符中)。再从该文件中读取这些字符串,将每个字符串中的小写字母转换成大写字母后在显示屏上逐行输出。
考虑:
(1)如何结束键盘的输入?
(2)是否考虑编写一个 int getline_keyboard( char *s)的函数,从键盘上的读入字符串。其中字符串的内容由s带回,长度有函数返回,如果长度为0则结束输入。
(3)编写一个 int getline_disk(char *s)的函数,从磁盘文件中读入字符串。其中字符串的内容由s带回。对s进行字母大小写的处理。
发到1176829883(qq的)

/*

C Traps and Pitfalls

Andrew koenig

Francis Glassborow

va_list


C Traps and Pitfalls


C TRAPS AND PITFALLS


Andrew koenig


ANDREW KOENIG


Francis Glassborow


FRANCIS GLASSBOROW


va_list


VA_LIST


Press any key to continue

*/

#include <stdio.h>
#define BUFFERSIZE 81

int getline_keyboard(char *s) {
int i = 0;
while((s[i] = getchar()) != '\n') ++i;
s[i] = '\0';
return i;
}

int getline_disk(char  *s,FILE *fin) {
return (int)fgets(s,BUFFERSIZE,fin);
}

int main() {
char str[BUFFERSIZE + 1];
int i;
FILE *fp = fopen("string.txt","wt");
if(fp == NULL) {
printf("不能打开文件\"string.txt\"\n");
return 1;
}
while(getline_keyboard(str)) {
fputs(str,fp);
fputc('\n',fp);
}
fclose(fp);
fp = fopen("string.txt","rt");
if(fp == NULL) {
printf("不能打开文件\"string.txt\"\n");
return 1;
}
while(getline_disk(str,fp)) {
puts(str);
for(i = 0; str[i]; ++i) {
if(str[i] >= 'a' && str[i] <= 'z')
str[i] += 'A' - 'a';
}
puts(str);
}
fclose(fp);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜