编写子函数strcmp
时间: 2024-05-07 11:13:45 浏览: 68
strcmp是一个用于比较两个字符串的函数,它可以判断两个字符串是否相等,并返回一个整数值来表示比较结果。下面是strcmp函数的基本用法:
```c
int strcmp(const char *str1, const char *str2);
```
其中,str1和str2是要进行比较的两个字符串。strcmp函数会按照字典序逐个比较两个字符串中的字符,直到遇到不同的字符或者其中一个字符串结束为止。
如果两个字符串相等,strcmp函数返回0;如果str1大于str2,返回一个正整数;如果str1小于str2,返回一个负整数。
下面是一个使用strcmp函数的示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "world";
int result = strcmp(str1, str2);
if (result == 0) {
printf("两个字符串相等\n");
} else if (result > 0) {
printf("str1大于str2\n");
} else {
printf("str1小于str2\n");
}
return 0;
}
```
输出结果为:"str1小于str2",因为在字典序中,'h'的ASCII码小于'w'的ASCII码。
相关问题
<4>编写子函数,查找班级为“软件工程一班”的所有学生联系人的信息。在主函数中定义一个顺序表LB,并将查找出的班级为“软件工程一班”的所有学生联系人的信息存入该顺序表LB中,在主函数中调用输出函数输出查找结果。 拓展项目: <5>编写程序:要求定义一个子函数,功能为将顺序表中的学生联系人信息存入数据文件中,数据文件名可以从键盘输入。在主函数中调用该函数完成将顺序表LB中的信息存储成文件的功能。 <6>编写程序:在上一程序的基础上,编写子函数,将已经读入的学生信息以班级为单位分别写入不同的文件中(文件名可按班级名的方式命名)。
好的,以下是我的回答:
<4>编写子函数,查找班级为“软件工程一班”的所有学生联系人的信息。在主函数中定义一个顺序表LB,并将查找出的班级为“软件工程一班”的所有学生联系人的信息存入该顺序表LB中,在主函数中调用输出函数输出查找结果。
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 50
#define MAX_STUDENT_NUM 100
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
char class[MAX_NAME_LEN];
} Student;
void search_students(Student students[], int n, char class_name[], Student result[], int *result_num) {
int i;
*result_num = 0;
for (i = 0; i < n; i++) {
if (strcmp(students[i].class, class_name) == 0) {
result[*result_num] = students[i];
(*result_num)++;
}
}
}
void output_students(Student students[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("Name: %s\nPhone: %s\nEmail: %s\nClass: %s\n\n", students[i].name, students[i].phone, students[i].email, students[i].class);
}
}
int main() {
Student students[MAX_STUDENT_NUM] = {
{"Tom", "123456", "tom@example.com", "Software Engineering 1"},
{"Jerry", "654321", "jerry@example.com", "Software Engineering 2"},
{"Alice", "111111", "alice@example.com", "Software Engineering 1"},
{"Bob", "222222", "bob@example.com", "Computer Science 1"},
{"Charlie", "333333", "charlie@example.com", "Computer Science 2"}
};
int n = 5;
Student result[MAX_STUDENT_NUM];
int result_num;
char class_name[MAX_NAME_LEN] = "Software Engineering 1";
search_students(students, n, class_name, result, &result_num);
output_students(result, result_num);
return 0;
}
<5>编写程序:要求定义一个子函数,功能为将顺序表中的学生联系人信息存入数据文件中,数据文件名可以从键盘输入。在主函数中调用该函数完成将顺序表LB中的信息存储成文件的功能。
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 50
#define MAX_STUDENT_NUM 100
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
char class[MAX_NAME_LEN];
} Student;
void save_students(Student students[], int n, char filename[]) {
FILE *fp = fopen(filename, "w");
int i;
for (i = 0; i < n; i++) {
fprintf(fp, "%s,%s,%s,%s\n", students[i].name, students[i].phone, students[i].email, students[i].class);
}
fclose(fp);
}
int main() {
Student students[MAX_STUDENT_NUM] = {
{"Tom", "123456", "tom@example.com", "Software Engineering 1"},
{"Jerry", "654321", "jerry@example.com", "Software Engineering 2"},
{"Alice", "111111", "alice@example.com", "Software Engineering 1"},
{"Bob", "222222", "bob@example.com", "Computer Science 1"},
{"Charlie", "333333", "charlie@example.com", "Computer Science 2"}
};
int n = 5;
char filename[MAX_NAME_LEN];
printf("Please enter the filename to save the students' information: ");
scanf("%s", filename);
save_students(students, n, filename);
return 0;
}
<6>编写程序:在上一程序的基础上,编写子函数,将已经读入的学生信息以班级为单位分别写入不同的文件中(文件名可按班级名的方式命名)。
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 50
#define MAX_STUDENT_NUM 100
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
char class[MAX_NAME_LEN];
} Student;
void save_students(Student students[], int n, char filename[]) {
FILE *fp = fopen(filename, "w");
int i;
for (i = 0; i < n; i++) {
fprintf(fp, "%s,%s,%s,%s\n", students[i].name, students[i].phone, students[i].email, students[i].class);
}
fclose(fp);
}
void save_students_by_class(Student students[], int n, char class_name[]) {
int i;
char filename[MAX_NAME_LEN];
sprintf(filename, "%s.txt", class_name);
Student result[MAX_STUDENT_NUM];
int result_num;
search_students(students, n, class_name, result, &result_num);
save_students(result, result_num, filename);
}
int main() {
Student students[MAX_STUDENT_NUM] = {
{"Tom", "123456", "tom@example.com", "Software Engineering 1"},
{"Jerry", "654321", "jerry@example.com", "Software Engineering 2"},
{"Alice", "111111", "alice@example.com", "Software Engineering 1"},
{"Bob", "222222", "bob@example.com", "Computer Science 1"},
{"Charlie", "333333", "charlie@example.com", "Computer Science 2"}
};
int n = 5;
char filename[MAX_NAME_LEN];
printf("Please enter the filename to save the students' information: ");
scanf("%s", filename);
save_students(students, n, filename);
int i;
for (i = 0; i < n; i++) {
save_students_by_class(students, n, students[i].class);
}
return 0;
}
基础项目: <1>编写程序:定义顺序表类型,该类型包含一个用于存储学生联系人信息的数组data,和用于存储实际学生联系人数量的变量length,其中数组元素的类型为学生联系人信息类型,包括姓名、班级、电话等信息。 <2>编写程序:要求定义一个子函数,功能为从给定的数据文件(文件名“students211.txt”)中读入多个学生联系人信息存入顺序表中。要求在主函数中定义一个顺序表LA,并通过调入该子函数来创建一个非空顺序表LA。 <3>编写程序:修改输出子函数DispList(),功能为在屏幕上输出顺序表中所有学生联系人的信息。在主函数中调用该函数完成输出顺序表LA的功能。 <4>编写子函数,查找班级为“软件工程一班”的所有学生联系人的信息。在主函数中定义一个顺序表LB,并将查找出的班级为“软件工程一班”的所有学生联系人的信息存入该顺序表LB中,在主函数中调用输出函数输出查找结果。 拓展项目: <5>编写程序:要求定义一个子函数,功能为将顺序表中的学生联系人信息存入数据文件中,数据文件名可以从键盘输入。在主函数中调用该函数完成将顺序表LB中的信息存储成文件的功能。 <6>编写程序:在上一程序的基础上,编写子函数,将已经读入的学生信息以班级为单位分别写入不同的文件中(文件名可按班级名的方式命名)。
好的,我将扮演一个由 CSDN 开发的 C 知道,我会尽力回答您的问题。以下是对您的问题的回答:
对于您的基础项目,我可以提供以下代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
typedef struct {
char name[MAX_LEN];
char class[MAX_LEN];
char phone[MAX_LEN];
} Student;
typedef struct {
Student data[MAX_LEN];
int length;
} SeqList;
void readFromFile(SeqList *list, char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
int i = 0;
while (fscanf(fp, "%s %s %s", list->data[i].name, list->data[i].class, list->data[i].phone) != EOF) {
i++;
}
list->length = i;
fclose(fp);
}
void dispList(SeqList *list) {
for (int i = 0; i < list->length; i++) {
printf("%s %s %s\n", list->data[i].name, list->data[i].class, list->data[i].phone);
}
}
void searchByClass(SeqList *list, SeqList *result, char *class) {
result->length = 0;
for (int i = 0; i < list->length; i++) {
if (strcmp(list->data[i].class, class) == 0) {
result->data[result->length] = list->data[i];
result->length++;
}
}
}
void writeToFile(SeqList *list, char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
for (int i = 0; i < list->length; i++) {
fprintf(fp, "%s %s %s\n", list->data[i].name, list->data[i].class, list->data[i].phone);
}
fclose(fp);
}
void writeByClass(SeqList *list) {
SeqList result;
for (int i = 0; i < list->length; i++) {
char filename[MAX_LEN];
sprintf(filename, "%s.txt", list->data[i].class);
searchByClass(list, &result, list->data[i].class);
writeToFile(&result, filename);
}
}
int main() {
SeqList LA, LB;
readFromFile(&LA, "students211.txt");
dispList(&LA);
searchByClass(&LA, &LB, "软件工程一班");
dispList(&LB);
writeToFile(&LB, "result.txt");
writeByClass(&LA);
return 0;
}
```
对于您的拓展项目,我也提供了相应的代码。这个程序可以将学生信息按照班级分别存储到不同的文件中。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
typedef struct {
char name[MAX_LEN];
char class[MAX_LEN];
char phone[MAX_LEN];
} Student;
typedef struct {
Student data[MAX_LEN];
int length;
} SeqList;
void readFromFile(SeqList *list, char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
int i = 0;
while (fscanf(fp, "%s %s %s", list->data[i].name, list->data[i].class, list->data[i].phone) != EOF) {
i++;
}
list->length = i;
fclose(fp);
}
void dispList(SeqList *list) {
for (int i = 0; i < list->length; i++) {
printf("%s %s %s\n", list->data[i].name, list->data[i].class, list->data[i].phone);
}
}
void searchByClass(SeqList *list, SeqList *result, char *class) {
result->length = 0;
for (int i = 0; i < list->length; i++) {
if (strcmp(list->data[i].class, class) == 0) {
result->data[result->length] = list->data[i];
result->length++;
}
}
}
void writeToFile(SeqList *list, char *filename) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file %s\n", filename);
return;
}
for (int i = 0; i < list->length; i++) {
fprintf(fp, "%s %s %s\n", list->data[i].name, list->data[i].class, list->data[i].phone);
}
fclose(fp);
}
void writeByClass(SeqList *list) {
SeqList result;
for (int i = 0; i < list->length; i++) {
char filename[MAX_LEN];
sprintf(filename, "%s.txt", list->data[i].class);
searchByClass(list, &result, list->data[i].class);
writeToFile(&result, filename);
}
}
int main() {
SeqList LA, LB;
readFromFile(&LA, "students211.txt");
dispList(&LA);
searchByClass(&LA, &LB, "软件工程一班");
dispList(&LB);
writeToFile(&LB, "result.txt");
writeByClass(&LA);
return 0;
}
```
希望这些代码能够帮助您完成您的项目。如果您有任何问题,请随时问我。
阅读全文