puts()函数只显示字符串,自动在显示的字符串末尾加上换行符。在遇到空字符时停止输出。
puts(&a[i])或 puts(a+i)表示从此地址开始输出。
gets()读取整行输入,直至遇到换行符,然后丢弃换行符,其余字符。在输入字符串过长时,会导致缓冲区溢出,然后报错。
fgets(数组名,length,读入的文件——stdin)读到换行符时,会把它存储在字符串中,然后自动读下一行,读到文件结尾,它会返回一个特殊的指针:空指针(NULL)。
fputs(数组名,写入的文件——stdout)不会在字符串末尾添加换行符,最后一个字符为\0空字符。
- /*将换行符替换成空字符*/
- while(words[i] != '\n')
- i++;
- words[i] = '\0';
- /*如果目标数组装不下一整行输入,则丢弃多出的字符*/
- while(getchar() != '\n')
- continue;
- while(fgets(word,STLEN,stdin) != NULL && words[0] != '\n')
- fputs(words,stdout);
- /*程序继续使用输入行中超出的代码*/
- char * s_gets(char * st, int n)
- {
- char * ret_val;
- int i = 0;
-
- ret_val = fgets(st, n, stdin);
- if (ret_val)
- {
- while (st[i] != '\n' && st[i] != '\0')
- i++;
- if(st[i] == '\n')
- st[i] = '\0';
- else
- while(getchar() != '\n')
- continue;
- }
- return ret_val;
-
- }
- char * s_gets(char * st, int n)
- {
- char * ret_val;
-
- ret_val = fgets(st, n, stdin);
- if (ret_val)
- {
- while (*st != '\n' && *st != '\0')
- st++;
- if(*st == '\n')
- *st = '\0';
- else
- while(getchar() != '\n')
- continue;
- }
- return ret_val;
-
- }
- /*用指针表示法*/
gets_s(words,length) 读到换行符,会丢弃换行符。当读到最大字符时都没有换行符,将目标数组中的首字符设置为空字符,读取并丢弃随后的输入直至读到换行符或文件结尾,然后返回空指针。
scanf("%10s",name)以下一个空白字符(空行,空格,制表符或换行符)作为字符的结束,scanf函数返回一个整数值,该值等于scanf()成功读取的项数或EOF,读到文件结尾时返回EOF。若超过字段宽度,scanf函数将会读取上一个调用结束的地方继续读取。
printf()函数不会自动在每个字符串末尾加上一个换行符,使用\n进行换行 。
- /*打印字符串,不添加\n*/
- void put1(const char * string)
- {
- while(*string)
- putchar(*string++);
-
- }
-
- /*用数组表示法编写*/
- void put1(const char string[])
- {
- int i = 0;
- while(string[i] != '\0')
- putchar(string[i++]);
- }
- /*打印字符串,并给出待打印字符的个数*/
- int put2(const char * string)
- {
- int count = 0;
- while (*string);
- {
- putchar(*string++);
- count++;
- }
- putchar('\n');
- return(count);
- }
strlen() 用于统计字符串的长度
- /*用于缩短字符串的长度*/
- void fit(char *string, unsigned int size)
- {
- if (strlen(string) > size)
- string[size] = '\0';
- }
strcat() 用于拼接字符串,接受两个字符串作为参数,该参数把第二个字符串的备份附加在第一个字符串的末尾,并把拼接后的字符串作为第一个字符串,第二个字符串不变。返回第一个字符串的地址。
strncat(ar1,ar2,13) 第三个参数指定了最大添加字符数
strcmp(ar1,ar2) 用于比较字符串的内容,不是地址,如果两个字符串(不是比较字符,比较字符使用==)参数相同,则函数返回0,否则返回非零值。 返回值为两者ASCII码之差。
strncmp(ar1,ar2,数字)用于比较字符串中的字符,直到发现不同的字符为止,第三个参数用于指定前多少个字符数。
strcpy(目标,源),strcpy()返回的类型是char*,即一个字符的地址,第一个参数不必指向数组的开始。
strncpy(target,source,n)第三个参数可拷贝的最大字符数。把n设置为笔目标数组大小-1,然后把数组最后一个元素设置为空字符。
sprintf(formal," ", , )函数于printf()用法相同,声明在stdio.h函数,它将数据写入字符串,而不是打印在显示器上。
atoi()用于把字母数字转换成整数,接受字符串作为参数返回整数值。
atof()把字符串转换成double类型的值。
atol()把字符串转换成long类型的值。
strtol(const char * restrict nptr,char **restrict endptr, int base)endptr是一个指针的地址,该指针被设置为标识输入数字结束字符的地址,base表示进制。strtol把字符串转换成long类型的值。最多转三十六进制
strtoul()把字符串转换成unsigned long类型的值。
strtod()把字符串转换成double类型的值。