标签:else 字符数组 输入 fgetc rev 超过 技术 返回 --
tips:
fgetc(fin):它读取一个打开的文件fin,读取每一个字符,然后返回一个int值,如果文件结束,fgetc返回一个特殊标记EOF
- getchar():从标准输入读取每一个字符,等价于fgetc(stdin)
- 在使用fgetc和getchar时,应该尽量避免写出和操作系统相关的程序
- fgetc(buf,maxn,fin):读取完整的一行放在字符数组buf中,且不会读取超过maxn-1个字符
- C语言不会禁止程序读写”非法内存“,例如声明的是char s[100],完全可以赋值s[10000]=‘a‘,但是后果自负
C语言中的gets(s)函数存在缓冲区溢出漏洞,在C11标准里面已经被删除
#include<stdio.h>
int main(){
int c, q = 1;
while((c = getchar()) != EOF){
if(c == '"'){
printf("%s",q?"``":"''");
q=!q;
}
else{
printf("%c",c);
}
}
return 0;
}
#include<stdio.h>
char s[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main(){
int i,c;
while((c=getchar())!=EOF){
for(i=1;s[i] && s[i]!=c;i++);
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
镜像字符串就,通俗来说,在纸上写一个A,然后再A的右边放一面镜子,在镜子里看到到依然是字符A,而像(3,E),(J,L)等的大概就是长得像吧。
比如3AIAE,3和E,A和A,I和I
#include<stdio.h>
#include<string.h>
#include<ctype.h>
const char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char* msg[] = {"not a palindrome","a regular palindrome","a mirrored str","a mirrored palindrome"};
char r(char ch){
if(isalpha(ch))
return rev[ch-'A'];
return rev[ch-'0'+25];
}
int main(){
char s[30];
while(scanf("%s",s) == 1){
int len = strlen(s);
int p = 1,m = 1;
for(int i=0;i<(len+1)/2;i++){
if(s[i] != s[len-1-i])
p = 0;
if(r(s[i]) != s[len-1-i])
m = 0;
}
printf("%s -- is %s.\n\n",s,msg[m*2+p]);
}
return 0;
}
tips:
- isalpha:判断字符是否为字母;类似的还有idigit、isprint等,再ctype.h中定义
- toupper/tolower:转换大小写
标签:else 字符数组 输入 fgetc rev 超过 技术 返回 --
原文地址:https://www.cnblogs.com/CH42e/p/12286344.html