В массиве найти все записи которые начинаются на буква "А" - C (СИ)
Формулировка задачи:
Здравствуйте, подскажите пожалуйста. Мне нужно в массиве найти все записи которые начинаются на буква "А". У меня прога ищет полностью слово как это изменить. Помогите пожалуйста
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<process.h>
struct person {
char FIO[100];
char nazv[100];
int nom;
};
void initStruct(struct person art[],int n)
{
int i;
FILE *fin;
fin = fopen("F://output.txt", "w");
if(!fin)
{
printf("Error");
exit(1);
}
for(i=0; i<n; i++)
{
printf("\n Imya\n");
printf("\n adress\n");
printf("\n vozrost \n");
scanf("%s", &art[i].FIO);
fprintf(fin,"%s ",art[i].FIO);
scanf("%s", &art[i].nazv);
fprintf(fin,"%s ",art[i].nazv);
scanf("%d", &art[i].nom);
fprintf(fin,"%d ",art[i].nom);
}
fclose(fin);
}
void showStruct(struct person art[],int n)
{
int i;
FILE *fin;
fin = fopen("F://output.txt", "r");
if(!fin)
{
printf("Error");
exit(1);
}
printf(" ------------------------------------------------- \n");
printf("| FIO |Adres|Vozrost|\n");
printf(" -------------------------------------------------\n");
for(i = 0; i < n; i++) {
fscanf(fin,"%s", &art[i].FIO);
fscanf(fin,"%s", &art[i].nazv);
fscanf(fin,"%d", &art[i].nom);
printf("|%s ",art[i].FIO);
printf("| %s ",art[i].nazv);
printf("| %d ",art[i].nom);
printf("\n");
}
printf(" ------------------------------------------------ \n");
fclose(fin);
}
void zapros(struct person art[],int n)
{
int i;
char fa[100];
FILE *fin;
fin = fopen("F://output.txt", "r");
if(!fin)
{
printf("Error");
exit(1);
}
printf("Vvedite bykvy: ");
scanf("%s",&fa);
printf("\nStatia: \n");
printf(" ------------------------------------------------ \n");
for(i = 0; i < n; i++) {
fscanf(fin,"%s", &art[i].FIO);
fscanf(fin,"%s", &art[i].nazv);
fscanf(fin,"%d", &art[i].nom);
if( strcmp(art[i].FIO, fa)== 0)
{
printf("|%s",art[i].FIO);
printf("| %s ",art[i].nazv);
printf("| %d ",art[i].nom);
printf("\n");
}}
printf(" ------------------------------------------------ \n");
fclose(fin);
}
int main()
{
int n,k;
printf("Kolichestvo zapisei: ");
scanf("%d",&n);
do {
struct person art[n];
printf("\n1: Sozdat stryktyry. ");
printf("\n2: pokazat stryktyry. ");
printf("\n3: vse statia opredelennogo avtora.");
scanf("%d",&k);
switch(k){
case 1: initStruct(art,n);break;
case 2: showStruct(art,n);break;
case 3: zapros(art,n);break;
default: printf("Vvedite 1, 2 ili 3.");break;
}
}
while(getch()!=27);
return 0;
}Решение задачи: «В массиве найти все записи которые начинаются на буква "А"»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<process.h>
#define VOWELS "eyuioaEYUIOA"
struct person {
char FIO[100];
};
void removeVowels(char * s)
{
char * f = new char[256];
int q;
int j = 0;
for(int i = 0; s[i] != '\0'; ++i)
if(strchr(VOWELS, s[i]) == NULL)
{
f[j++] = s[i];
q = j;
}
f[q] = '\0';
printf("result: %s\n", f);
}
void initStruct(struct person art[],int n)
{
int i;
FILE *fin;
fin = fopen("F://output.txt", "w");
if(!fin)
{
printf("Error");
exit(1);
}
for(i=0; i<n; i++)
{
printf("\n Imya\n");
scanf("%s", &art[i].FIO);
fprintf(fin,"%s ",art[i].FIO);
}
fclose(fin);
}
void showStruct(struct person art[],int n)
{
int i;
FILE *fin;
fin = fopen("F://output.txt", "r");
if(!fin)
{
printf("Error");
exit(1);
}
printf(" ------------------------------------------------- \n");
printf("| FIO |Adres|Vozrost|\n");
printf(" -------------------------------------------------\n");
for(i = 0; i < n; i++) {
fscanf(fin,"%s", &art[i].FIO);
printf("|%s ",art[i].FIO);
printf("\n");
printf("\n");
}
printf(" ------------------------------------------------ \n");
fclose(fin);
}
void zapros(struct person art[],int n)
{
int i, j;
char s[256] = "";
FILE *fin;
fin = fopen("F://output.txt", "r");
if(!fin)
{
printf("Error");
exit(1);
}
for(i = 0; i < n; i++) {
fscanf(fin,"%s", &art[i].FIO); }
/*
printf("result: %s\n", art[0].FIO);*/
for(i = 0; i < n; i++)
removeVowels(art[i].FIO);
fclose(fin);
}
int main()
{
int n,k;
printf("Kolichestvo zapisei: ");
scanf("%d",&n);
do {
struct person art[n];
printf("\n1: Sozdat stryktyry. ");
printf("\n2: pokazat stryktyry. ");
printf("\n3: vse statia opredelennogo avtora.");
scanf("%d",&k);
switch(k){
case 1: initStruct(art,n);break;
case 2: showStruct(art,n);break;
case 3: zapros(art,n);break;
default: printf("Vvedite 1, 2 ili 3.");break;
}
}
while(getch()!=27);
return 0;
}