有区别。 gets(str); 是读取一行字符串,直到换行,字符串里允许有空格 等空白字符。scanf("%s",a); 读取一个字符串,直到 空格之类的分隔符为止。例如:char a[100], str[100];当拍入一行内容是: there are six dogsgets(str); 读到的字符串 是: "there are six dogs".scanf("%s",a); 读到的字符串是: "there"