鱼C论坛

 找回密码
 立即注册

c\c++字符串函数

热度 1已有 648 次阅读2013-1-22 13:00

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; 
 } 

路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 19:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部