-- 作者:admin
-- 发布时间:2015/11/15 21:21:55
-- [推荐]第七课代码讲义:字符串数组
字符串数组 常规输出 int main() { char str[]="Hello world!"; printf("%s",str); return 0; }
逐个字符打印 int main() { int i; char str[]="Hello world!"; for(i=0;i<=strlen(str);i++) { printf("%d\\n",str[i]); } return 0; }
如果越界了会怎么样?
输入字符串 int main() { char str[100]; scanf("%s",str); printf("%s",str); return 0; }
字符串专用函数 int main() { char str[100]; gets(str); puts(str); return 0; }
int main() { char str1[100],str2[100]; gets(str1); gets(str2); strcat(str1,str2);//catenate puts(str1); return 0; }
int main() { char str1[100],str2[100]; gets(str1); gets(str2); puts(str1); strcpy(str1,str2);//copy puts(str1); return 0; }
小心目标数组的大小要能容纳
int main() { char str1[100],str2[100]; gets(str1); gets(str2); if(strcmp(str1,str2)>0) //compare puts(">"); else if(strcmp(str1,str2)==0) puts("="); else puts("<"); return 0; }
在三个字符串中找到最大的那个 char string[20],str[3][20]; int i; for(i=0; i<3; i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf("\\nThe largest string is:\\n%s\\n",string);
练习: 1)输入一行字符,统计其中的单词个数,单词间空格分开 这段代码有问题,假设一定是空格开头 char str[]=" this is a book "; int i=0,words=0;; for(i=0;i<strlen(str);i++) { if(str[i]>=\'a\' && str[i-1]<=\'z\') words++; } printf("%d",words);
#include <stdio.h> void main() { char str[100]; int i=0,words=0,flag=0; gets(str); for(i=0; i<strlen(str); i++) { if(flag==0 && str[i]!=\' \') { flag=1; words++; } if(str[i]==\' \') flag=0; }
printf("There are %d words in the line\\n",words); }
#include <stdio.h> void main() { char str[100]; int i,num=0,word=0; char c; gets(str); for(i=0; (c=str[i])!=\'\\0\'; i++) if(c==\' \') word=0; else if(word==0) { word=1; num++; } printf("There are %d words in the line\\n",num); }
2)自己实现复制 #include <stdio.h> #include <string.h> int main() { char s1[100],s2[100]; int i; printf("input s2:"); scanf("%s",s2); for (i=0; i<=strlen(s2); i++) s1[i]=s2[i]; printf("s1:%s\\n",s1); return 0; }
3)自己实现追加 #include <stdio.h> int main() { char s1[80],s2[40]; int i=0,j=0; printf("input string1:"); scanf("%s",s1); printf("input string2:"); scanf("%s",s2); while (s1[i]!=\'\\0\') i++; while(s2[j]!=\'\\0\') s1[i++]=s2[j++]; s1[i]=\'\\0\'; printf("\\nThe new string is:%s\\n",s1); return 0; }
|