#include <stdio.h>
#include <string.h>
#define N 5
char username[N+3][20]={"ana","sofia","maria","isabel","joao","hugo","francisco","pedro"};
char str[20];
read_username()
{
printf("Insert your username: ");
gets(str);
}
void searchusername(int n)
{
int i;
for(i=0;i<=n;i++)
{
if(strstr(username[i], str) != NULL)
printf("username exists")
}
}
int main()
{
read_username();
searchusername(8);
}
我有代码来检查用户名是否存在,但我不能转过来,所以我只在用户名不存在时才得到printf,其他没有使用NULL的方式也没关系,ty。strstr == NULL不起作用,
'gets'不删除尾部的换行符,所以你的字符串将包含它,因此不匹配任何名字。另外,***不要使用'gets()',因为它是不安全的!***使用'fgets()'代替。并且设计你的代码,因为它看起来很糟糕。 – 2014-11-08 20:00:32
请注意,您的循环在这里从0到8,而您的数组只有索引0 ... 7。 – hyde 2014-11-08 20:02:03
@hyde你实际上是对的,但这是重复的。甚至不是重复的,而是'N + 1' - licate。因此,它应该是复制关闭而不是被回答(这会鼓励OP再次忽略调试器和文档)。 – 2014-11-08 20:05:13