【1】scanf("%s",s) 它会读入一个不含空格、 TAB和回车符的字符串,存入字符数组s.(注意:s前面不含取址符&)如果是字符串数组char s[m] [n],可以用“scanf("%s", s[i])”读取第i个字符串。(注意,“scanf("%s", s)”遇到 空白字符会停下来。)
【2】用gets读入多行数据的一个示例
char c[105];
while(gets(c))
{
if(c[0]==EOF) break;
}
[3](输入带空格的字符串)利用格式符“%[]”它的作用为扫描字符集合(下图中的\n可以换成其他字符常量或控制字符用于结束输入(可为EOF)) 注意:不能使用while(scanf("%[^\n]",s))输入含空格的字符串,程序会报错!!!我觉得是因为这个没有scanf返回值。
char s[10];
scanf("%[^\n]",s);
【4】strchr(s, c) ;(返回在s中字符c第一次出现的位置即地址,如果找不到就输出NULL)
【5】将a和b的值调换 : a^=b^=a^=b; ('^'异或符号,二进制数相同为0,不同为1)等效于[1]b^=a^=b; [2]a=a^b; [1] 解释为b=b^(a^b)=a^b^b=a^0=a;(操作数的位运算并不改变原操作数的值) [2]解释为a=a^b=(a^b)^(b^a^b)=a^a^b^b^b=b (这是将[1]中的式子带回去算)
【6】
if (islower(s[i])){s[i]=='z'? s[i]='A': s[i]=s[i]-31;}//报错
if (islower(s[i])){(s[i]=='z') ? (s[i]='A') : (s[i]=s[i]-31);}//正确