下午好
我带着无法克服的疑问来到这里,并且尝试了多种方法。我正在做一个程序,除其他外,用户必须输入有关产品的数据,其中序列号必须是唯一的并且类型为 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,并进行了一些修复以使其可以编译,但是如果您启用编译警告,编译器真的会惹恼您。
你可以像我上面做的那样从数组构建一个字符串,或者通过使用 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);
关于c - 查找字符串是否存在于结构 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213684/