C编程基础day07

char buf[10], a[10];
scanf (“%s \n”,buf);  scanf 函数碰到 空格停止,只取第一个空格前的内容,第一个空格后边若有内容会被下一个scanf自动取走, 另外scanf不做越界检查(所以微软不让用)

char buf[10];
gets(buf);   gets函数碰到 换行符或文件结束符停止,允许有空格, 另外gets也不做越界检查,现在都不用这个函数了。


最安全的fgets函数
char *fgets(char *S, int size, FILE *stream) ;
1、将输入内容放入 S指向的地方。
2、实际只能存放size-1个字符,因为需要有一个字节放文件结束符。
3、FILE *是文件指针,若是从键盘标准输入的话固定使用stdin, stdin代表标准输入。
4、fgets 函数会把换行符也读进去。 但读入换行符后好像停止了输入也就结束了(待验证)


输出puts函数, puts会自动在输出后自动换行,是在屏幕上显示换行,字符串本身没有变化,没有加\n
char buf[100]="Hello !";
puts(buf);

输出fputs函数, 这个函数不会自动增加换行效果。
int fputs(const char * str, FILE * stream); 第二个参数是指定输出文件,若输出目标位标准化屏幕化为stdout. 

strlen函数计算从头开始,遇到第一个‘\0’停止。 字符串结束符‘\0’长度不计算在内。


char buf[100]="abcdefghik";
scanf("%s",buf); /*此时键盘输入 hello 回车*/
printf("%s",buf); /*此时打印结果为hello*//*此时buf内容为hello\0fghijk*/

char *strcpy(char * dst, const char *strsrc)  拷贝原理从首字符开始, 遇到第一个‘\0’立即结束,src 第一个‘\0’后边的内容不拷贝

strnpy()函数  指定拷贝字节数目,可以把src第一个‘\0’拷贝过去,但是‘\0’后边的内容不拷贝。


strcmp 字符串比较函数
strncmp 指定长度比较
strcat 字符串追加函数
strncat 指定长度追加

printf函数功能为格式化一个字符串,并把字符串输出屏幕
sprintf函数功能为格式化一个字符串,并把字符串输出(保存)到指定数组
char dst[100];
sprintf(dst,"a=%d, ch=%c, buf=%s", a,ch,buf);
printf("%s",dst);
把数字转换成字符串一种方法为 char buf[100]; sprintf(buf,"%d",12345);

sscanf()函数 从数组buf中以指定格式提取内容,提取整型变量最方便, 提取字符串默认以空格处理
int buf[]={1,2,3};
int a,b,c;
sscanf(buf,"%d %d %d",&a,&b,&c);
printf("a=%d, b=%d, c=%d \n",a,b,c);

char str[]="a=1, b=2 ,c =3";
a=0;
b=0;
c=0;
sscanf(str,"%d %d %d",&a,&b,&c);
printf("a1=%d, b1%d, c1=%d \n",a,b,c);
把字符串转为数字可以用sscanf()函数


char temp[]="abc edf hij";
char m[10],n10],k[10];
sscanf(tempr,"%s %s %s",m,n,k);/*提取字符串默认以空格处理, 若用逗号来分割需要用正则表达式*/ /*数组名不用加&*/
printf("m=%s, b1n%s, c1k%s\n",m,n,k);

char *strchr(const char *str, int c) 查询int c代表的字符在字符串的位置,查询成功返回字符所在位置,查询失败返回空

char *strstr(const char *str, const char *cstr) 查询字符串cstr在字符串的位置,查询成功返回字符串所在位置,查询失败返回空

char *strtok(char *str, const char *delim) 
1、字符串切割,第二个参数为切割字符,切割成功返回值为切割后得到字符串,切割失败返回空。
2、在切割位置的字符换成结束符号‘\0’, 使用strtok会破坏原来字符串结构,切割前最好先拷贝一份,切割拷贝的内容
3、第二次之后调用strtok时候第一个参数应为NULL空。

char buf[100]="abc, edf, ghi, klm";
char temp[100];
strcpy(temp,buf);

char *p;
p = strtok(buf, ",");

while(p!=NULL)
{
    printf("%s\n",p);
    strtok(NULL,","); /*第二次之后调用strtok时候第一个参数应为NULL空。*/
}


int atoi(const char *nptr); 把字符串中数字转换成整型,会扫描nptr指向的字符串,跳过前边的空格字符,遇到+-号或数字才开始转换,而遇到非数字或字符串结束符‘\0’时结束转换。
atof转换浮点型
atol转换成长整型
反过来把数字转换成字符串一种方法为 char buf[100]; sprintf(buf,"%d",12345);
把字符串转为数字可以用sscanf()函数

无参数无返回值的函数被调用时候只用fun()即可, 使用fun(void)或者 void fun()都会报错。

同一个文件不能出现同名函数。



猜你喜欢

转载自blog.csdn.net/Shayne_Lee/article/details/81050982