字符串数组
常规输出
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;
}