#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