用c语言编程:从键盘输入一个字符, 按如下要求将结果写入文 件 result.txt。如果是数字字符,向文件 写入相应的整数;如果是小写字母,向文件写入相及应大写字母;如果是小写字字符,向文件写入相应小写字母,其余情 况,向文件写入“非字母及数字”
时间: 2023-05-14 19:06:53 浏览: 71
以下是用 C 语言编写的代码,可以实现从键盘输入一个字符,并按照要求将结果写入文件 result.txt:
```c
#include <stdio.h>
int main() {
char c;
FILE *fp;
fp = fopen("result.txt", "w");
printf("请输入一个字符:");
scanf("%c", &c);
if (c >= '0' && c <= '9') {
fprintf(fp, "%d", c - '0');
} else if (c >= 'a' && c <= 'z') {
fprintf(fp, "%c", c - 'a' + 'A');
} else if (c >= 'A' && c <= 'Z') {
fprintf(fp, "%c", c);
} else {
fprintf(fp, "非字母及数字");
}
fclose(fp);
return 0;
}
```
当用户输入一个字符后,程序会判断该字符的类型,并根据要求将结果写入文件 result.txt 中。如果是数字字符,程序会将其转换为相应的整数并写入文件;如果是小写字母,程序会将其转换为相应的大写字母并写入文件;如果是大写字母,程序会直接将其写入文件;如果既不是数字也不是字母,则程序会写入“非字母及数字”。
相关问题
c语言编写程序读取网页文件(例如:a.htm),找出标题内容以及在文件中行数写入文件result.txt中,同时统计标题中数字字符和字母字符的个数(分别编写函数实现统计),也写入文件result.txt中,result.txt中写入的格式如下: a.htm网页的标题是: 标题在文件 a.htm网页的第几行: 标题中数字字符的个数: 标题中字母字符的个数:
好的,这里是一个修改版的程序,它会同时统计标题中数字字符和字母字符的个数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
// 统计字符串中数字字符的个数
int count_digit(char *str) {
int count = 0;
for (int i = 0; i < strlen(str); i++) {
if (isdigit(str[i])) {
count++;
}
}
return count;
}
// 统计字符串中字母字符的个数
int count_alpha(char *str) {
int count = 0;
for (int i = 0; i < strlen(str); i++) {
if (isalpha(str[i])) {
count++;
}
}
return count;
}
int main() {
// 读取HTML文件
FILE *fp;
char *filename = "a.htm";
fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
return 1;
}
fseek(fp, 0L, SEEK_END);
int filesize = ftell(fp);
fseek(fp, 0L, SEEK_SET);
char *html = malloc(filesize + 1);
fread(html, sizeof(char), filesize, fp);
fclose(fp);
// 解析HTML文件
xmlDocPtr doc;
xmlNodePtr node;
doc = xmlReadMemory(html, filesize, "noname.xml", NULL, 0);
if (doc == NULL) {
printf("Failed to parse document\n");
return 1;
}
node = xmlDocGetRootElement(doc);
// 找到标题内容
xmlNodePtr title_node;
title_node = xmlGetFirstElementChild(node);
while (title_node != NULL && strcmp((char *)title_node->name, "title") != 0) {
title_node = xmlGetNextElementSibling(title_node);
}
if (title_node == NULL) {
printf("Failed to find title\n");
return 1;
}
char *title = (char *)xmlNodeListGetString(doc, title_node->xmlChildrenNode, 1);
// 找到行数
int lines = 0;
char *pch = strchr(html, '\n');
while (pch != NULL) {
lines++;
pch = strchr(pch+1, '\n');
}
// 统计标题中数字字符和字母字符的个数
int digit_count = count_digit(title);
int alpha_count = count_alpha(title);
// 写入结果文件
FILE *fp_out;
char *filename_out = "result.txt";
fp_out = fopen(filename_out, "w");
if (fp_out == NULL) {
printf("Failed to open file: %s\n", filename_out);
return 1;
}
fprintf(fp_out, "a.htm网页的标题是:%s\n", title);
fprintf(fp_out, "标题在文件 a.htm网页的第%d行\n", lines);
fprintf(fp_out, "标题中数字字符的个数:%d\n", digit_count);
fprintf(fp_out, "标题中字母字符的个数:%d\n", alpha_count);
fclose(fp_out);
// 释放内存
free(html);
xmlFree(title);
xmlFreeDoc(doc);
return 0;
}
```
这个程序会读取名为a.htm的文件,解析其中的HTML代码,并找到标题内容和行数,同时统计标题中数字字符和字母字符的个数,然后将结果写入名为result.txt的文件中。你只需要将a.htm文件放在程序所在的目录下,然后编译运行程序即可。
C语言编写程序读取网页文件(例如:a.htm),找出标题内容以及在文件中行数写入文件result.txt中,同时统计标题中数字字符和字母字符的个数(分别编写函数实现统计),也写入文件result.txt中,result.txt中写入的格式如下: a.htm网页的标题是: 标题在文件 a.htm网页的第几行: 标题中数字字符的个数: 标题中字母字符的个数: 注意:网页文件(例如:a.htm)每行最多255个字符。 要求: (1)输入输出要有文字说明,例如:读文件xxx等; (2)程序代码的重要部分要有注释; (3)代码结构清晰,有缩进格式; (4)有程序调试过
以下是C语言编写程序读取网页文件并统计标题内容的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAXLINE 255 // 每行最多255个字符
// 统计字符串中数字字符的个数
int count_digits(char *str) {
int count = 0;
while (*str) {
if (isdigit(*str)) {
count++;
}
str++;
}
return count;
}
// 统计字符串中字母字符的个数
int count_letters(char *str) {
int count = 0;
while (*str) {
if (isalpha(*str)) {
count++;
}
str++;
}
return count;
}
int main() {
char filename[100];
printf("请输入文件名:");
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败!\n");
exit(1);
}
char line[MAXLINE]; // 存储每行的内容
char title[MAXLINE]; // 存储标题内容
int line_num = 0; // 存储标题所在的行数
int digits_count = 0; // 标题中数字字符的个数
int letters_count = 0; // 标题中字母字符的个数
while (fgets(line, MAXLINE, fp) != NULL) {
line_num++;
// 查找标题
char *pos = strstr(line, "<title>");
if (pos != NULL) {
pos += strlen("<title>"); // 跳过<title>标签
char *endpos = strstr(pos, "</title>");
if (endpos != NULL) {
*endpos = '\0'; // 截断字符串
strcpy(title, pos); // 复制标题内容
}
// 统计标题中数字字符和字母字符的个数
digits_count = count_digits(title);
letters_count = count_letters(title);
break; // 找到标题后结束循环
}
}
fclose(fp);
// 将结果输出到文件
FILE *outfp = fopen("result.txt", "w");
if (outfp == NULL) {
printf("输出文件打开失败!\n");
exit(1);
}
fprintf(outfp, "%s网页的标题是:%s\n", filename, title);
fprintf(outfp, "标题在文件 %s 网页的第%d行\n", filename, line_num);
fprintf(outfp, "标题中数字字符的个数:%d\n", digits_count);
fprintf(outfp, "标题中字母字符的个数:%d\n", letters_count);
fclose(outfp);
printf("结果已输出到文件result.txt中!\n");
return 0;
}
```
程序的逻辑比较简单,首先让用户输入要读取的文件名,然后打开文件并逐行读取文件内容。在读取的过程中查找标题内容,找到后记录标题所在的行数以及标题中数字字符和字母字符的个数。最后将结果输出到文件result.txt中。
阅读全文