getch函数
Head File:
#include "conio.h"
功能:从控制台无回显的读取一个字符
用法:int void getch()
该函数函数经常用于交互输入的过程中完成暂停等功能
getche函数
Head File:
#include "conio.h"
功能:从控制台带回显的读取一个字符
用法:int void getche()
该函数函数经常用于交互输入的过程中完成暂停等功能
getchar函数
Head File
#include "conio.h"
功能:从控制台带回显的读取一个字符
用法:int void getchar()
该函数也是从键盘上读入一个字符, 并带回显。
它与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束,
回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
for( i = 0; (ch = getchar()) != EOF && (ch!='\n'); i++ )
buffer[i] = (char)ch; // 表示读到文件结束停止!与getchar对应的还有putchar函数,此函数的作用是将getchar函数读入的内容的第一个字符显示出来。
strlen(string)
功能:用于测试字符串长度,即除字符串结束标记外的所有字符的个数。
#include "string.h"
void main( void )
{
char strBuf[100];
scanf("%s",strBuf);
printf("%s",strBuf);
int k=strlen(strBuf);
printf("\n%d",k);
getch();
}
strupr(string) / strlwr(string) 功能:字符串大小写转换函数
用法:
printf("\n%s",strupr(strBuf));
printf("\n%s",strlwr(strBuf));
strcpy(string1,string2)/strncpy(string1,string2,n)
功能:将"字符串"按"整型表达式(n)"指定的个数组成字符串存入"字符串"中,若省略"n",则将整个"字符串"存入数字中
注意:在使用函数strncpy时,如果按整形表达式来复制时,会出现"....烫烫烫烫烫烫..."主要是因为复制后字符串str1不是以'\0'结尾
,此时需要手动将字符串结束符号加入。
#include <stdio.h>
#include "string.h"
void main( void )
{
char strBuf1[100],strBuf2[100],strBuf3[100];
scanf("%s",strBuf1);
gets(strBuf1);
strcpy(strBuf2,strBuf1);
strncpy(strBuf3,strBuf1,3);
strBuf3[3]='\0';
printf("strBuf2:%s",strBuf2);
printf("\nstrBuf3:%s",strBuf3);
}
getcmp(string1,string2)/getncmp(string1,string2,n)
功能:getcmp表示比较两个字符串,getncpy表示比较两个字符串的前n位,若为缺省表示和strcmp函数相同
#include "string.h"
#include "stdio.h"
void main()
{
int m;
int n;
char strArr1[80],strArr2[80];
puts("please input the first string:");
gets(strArr1);
puts("please input the first string:");
gets(strArr2);
m=strcmp(strArr1,strArr2);
printf("\nstrcmp() returns %d",m);
n=strncmp(strArr1,strArr2,2);
printf("\nstrncmp() returns %d",n); //cout字符串string2中的前n位连接到string1中,结果存在string1。
#include "string.h"
void main()
{
char str1[100],str2[100];
puts("input string1:");
gets(str1);
puts("input string2:");
gets(str2);
strcat(str1,str2);
strncat(str1,str2,3);
puts(str1);
}
下面是C/C++面试时遇到的一些题目
1. 不调用C library实现字符串的复制功能
#include "stdio.h"
#include "iostream"
using namespace std;
char *strcpy1(char *, const char *);
void main()
{
char strD[20];
const char *strS="woshishui";
strcpy1(strD,strS);
printf("%s",strD);
}
char *strcpy1(char *strDess, const char *strSrss)
{
char *address=strDess;
while((*strDess++ = *strSrss++ )!='\0');
return address;
}
2. 请写一个函数来模拟C++中的strstr()
//strstr函数的功能是把主串中子串以及以后的字符全部返回。不调用库函数,实现此功能。
#include "stdio.h"
#include "string.h"
const char *strstr1(const char *hostStr,const char *subStr);
void main()
{
char *str=strstr("1234567","345");
printf("%s",str);
char *string1="1234567";
char *string2="345";
strstr1(string1,string2);
printf("%s",strstr1(string1,string2));
}
const char *strstr1(const char *hostStr,const char *subStr)
{
for (int i=0;hostStr[i]!='\0';i++)
{
int j=0;
int temp=i;
if (hostStr[i]==subStr[j])
{
while (hostStr[i++]==subStr[j++])
{
if(subStr[j]=='\0')
return &hostStr[i-j];
}
i=temp;
}
}
return NULL;
}