gpt4 book ai didi

c - 如何读取带有空格的结构中的字符串?

转载 作者:行者123 更新时间:2023-11-30 14:55:46 25 4
gpt4 key购买 nike

我们的公司办公室需要一个应用程序来维护钦奈的所有注册大学,并且该应用程序在搜索大学方面应该是用户友好的。创建一个名为“大学”的结构,具有以下属性:名称、许可证号和区号。

要求:大学执照号码应为 6 位数字,前 2 位数字必须为大写字母,后 4 位数字必须为数字。

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

struct University
{
char name[100];
char license[10];
int area;

}u[10];

void main()
{
int i, n, r, k = 0, flag = 1, f2 = 1, j, search = 0;
char s[100];
printf("Enter the number of records\n");
scanf("%d", &n);
printf("Enter the details of %d universities\n", n);

for (i = 0; i<n; i++)
{
printf("Name of the University\n");
getchar();
scanf("%s", u[i].name);
j = strlen(u[i].name);
if (j <= 1)
{
f2 = 0;
break;
}
printf("License Number\n");

scanf("%s", u[i].license);
k = strlen(u[i].license);
if (k<1)
{
f2 = 0;
break;
}

if (k<6)
{
flag = 0;
}
else if ((u[i].license[0] >= 'A' && u[i].license[0] <= 'Z') && (u[i].license[1] >= 'A' && u[i].license[1] <= 'Z') && (u[i].license[2] >= '0' && u[i].license[2] <= '9') && (u[i].license[3] >= '0' && u[i].license[3] <= '9') && (u[i].license[4] >= '0' && u[i].license[4] <= '9') && (u[i].license[5] >= '0' && u[i].license[5] <= '9') && k == 6)
{
flag = 1;
}
else
{
flag = 0;
}
printf("Area Code\n");
scanf("%d", &u[i].area);
//printf("%d",u[i].area);
if (u[i].area <= 0)
{
f2 = 0;
}

}
if (flag == 0)
{
printf("Sorry! You have entered incorrect license number.");
}
else if (f2 == 0)
{
printf("Unable to continue");
}
else
{
printf("Enter the name of the University to be searched\n");
scanf("%s", s);
for (i = 0; i<n; i++)
{
if ((strcmp(u[i].name, s)) == 0)
{
search = 1;
}
}
if (search == 1)
{
printf("University is licensed one.");
}
else
{
printf("University is not found.");
}
}
}

当我将大学数量指定为 3 时,则没有接受第三所大学的输入。

测试用例

输入1

输入记录数

3

输入 3 所大学的详细信息

大学名称

SRM

许可证号

SR1234

区号

28

大学名称

马德拉斯大学

许可证号

SP0904

区号

18

大学名称

巴拉斯大学

许可证号

BU0101

区号

35

输入要搜索的大学名称

SRM

输出1

大学已获得许可。

最佳答案

似乎您只想读取包含空格的 c 字符串。为此,您可以使用fgets。这是一个玩具程序:

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

struct s {
char name[100];
int something;
};

int main(void)
{
struct s myStruct;
printf("%s", "Enter name: ");
fgets(myStruct.name, 100, stdin);

myStruct.name[strlen(myStruct.name) - 1] = '\0'; //This should remove the newline char at the end
printf("Name is: %s", myStruct.name);
}

关于c - 如何读取带有空格的结构中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45546702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com