查找字符串是否存在于结构向量中
问题描述:
下午好,查找字符串是否存在于结构向量中
我在这里怀疑我无法克服,我尝试了很多方法。我正在制作一个程序,用户必须输入有关产品序列号必须唯一且类型为char的数据。正在发生的事情是,当我输入第一个产品序列号时,程序将返回已经是具有此序列号的产品,尽管它是第一个。
这里是我的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char numeroserie;
char descricao;
float preco;
} stProduto;
/********************** Funcoes dos produtos *************************/
void inserirProduto(stProduto produtos[], int *contadorProdutos);
int procurarNumeroserie(stProduto produtos[], int contadorProdutos, char produtoAProcurar);
int main()
{
stProduto produtos[500];
int contadorProdutos=0;
inserirProduto(produtos,&contadorProdutos);
return 0;
}
void inserirProduto(stProduto produtos[], int *contadorProdutos)
{
char string1;
char posicao;
do
{
printf("Introduza o numero de serie do produto:");
scanf("%s",&string1);
posicao = procurarNumeroserie(produtos,*contadorProdutos, string1);
if (posicao == 0)
{
printf("Ja existe um produto com esse numero de serie!!!\n");
}
}
while(posicao == 0);
strcpy(produtos[*contadorProdutos].numeroserie,string1);
(*contadorProdutos)++;
}
int procurarNumeroserie(stProduto produtos[], int contadorProdutos, char produtoAProcurar)
{
int i;
char posicao;
posicao = 0;
for(i = 0 ; i < contadorProdutos ; i++)
{
if (strcmp(produtos[i].numeroserie, produtoAProcurar) == 0)
{
posicao=i;
i=contadorProdutos;
}
}
return posicao;
}
有人帮助,请!我已经感到沮丧。
感谢
答
你理解错了,char
是不是在C字符串类型,它是一个整数类型。
字符串被定义为字节序列非nul
,后面跟着nul
字节。
他们键入char
是1个字节,因此一个字符串可以是char
数组,像下面
char string[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
/* ^nul: it's mandatory
* for this to be a
* string
*/
你上面贴的代码似乎是Java的最初一些修正,使之编译,但如果你启用编译warnigs,编译器会真的让你感到厌烦。
您可以像上面那样从一个数组中构建一个字符串,或者使用指针char
,在这种情况下,您需要指向一个数组或使用malloc()
分配的动态内存。
一个例子是
char *hello;
hello = malloc(6);
if (hello == NULL)
return ERROR; /* or whatever is need but do not continue */
strcpy(hello, "Hello");
/* do whatever you want with hello */
free(hello);
答
我已成功地把我的工作:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char numeroserie[9];
char descricao;
float preco;
} stProduto;
/********************** Funcoes dos produtos *************************/
void inserirProduto(stProduto produtos[], int *contadorProdutos);
int procurarNumeroserie(stProduto produtos[], int contadorProdutos, char produtoAProcurar[9]);
int main()
{
stProduto produtos[500];
int contadorProdutos=0;
inserirProduto(produtos,&contadorProdutos);
return 0;
}
void inserirProduto(stProduto produtos[], int *contadorProdutos)
{
char string1[9];
char posicao;
do
{
printf("Introduza o numero de serie do produto:");
scanf("%s",&string1);
posicao = procurarNumeroserie(produtos,*contadorProdutos, string1);
if (posicao == 0)
{
printf("Ja existe um produto com esse numero de serie!!!\n");
}
}
while(posicao == 0);
strcpy(produtos[*contadorProdutos].numeroserie,string1);
(*contadorProdutos)++;
}
int procurarNumeroserie(stProduto produtos[], int contadorProdutos, char produtoAProcurar[9])
{
int i;
char posicao;
posicao = 0;
for(i = 0 ; i < contadorProdutos ; i++)
{
if (strcmp(produtos[i].numeroserie, produtoAProcurar) == 0)
{
posicao=i;
i=contadorProdutos;
}
}
return posicao;
}
把numeroserie [8] i的确保用户只需插入8个字符?
感谢
但我如何改变我的代码做正确的事!!!! – BRBL
它需要工作,我可以做到这一点,如果你付我20 $ paypal。 –
请帮帮我!我没有那笔钱..... – BRBL