您的位置:首页 > 其它

字符串处理

2017-06-12 10:38 44 查看

gets、fgets

gets是从stdin流中读取字符串

直至接受到换行符或EOF时停止

gets函数, 不对越界做判断

gets读取到换行符,转换成’\0’存入buff中。

char *fgets(char *s, int size, FILE *stream)

fgets(…)读入文本行时的两种情况

1.如果n大于一行的字符串长度,那么当读到字符串末尾的换行符时,fgets(..)会返回。并且在s的最后插入字符串结束标志’\0’。 而s缓冲区剩余的位置不会再填充。

example:

123abc
fgets(s,10,fp);


此时,读入七个字符,123abc\n,实际上还有最后的’\0’,所以,strlen(s)=7; 如果要去除末尾的\n,s[strlen(s)-1]=’\0’;便可。

2.如果n小于等于一行的字符串的长度,那么读入n-1个字符,此时并没有读入\n因为并没有到行尾 ,同样在最后会插入’\0’.

example:

123abc
char  s[5];
fgets(s,5,fp);


这时读入4个字符,123a,并没有换行符,所以strlen(s)=4.

puts、fputs

puts遇’\0’结束

scanf

遇空格结束

strlen()、sizeof( )

strlen( )计算字符串个数,不包含尾0

sizeof( )计算字符数时包含尾零

strcpy、strncpy

strcpy(*buff, *str),包含尾零

fprintf(stderr, “%c”, buf[i++])

//将buf内容以字符形式输出到标准错误输出(标准错误输出无缓存, 不用fflush()就能输出)

sprintf(buf, “pid:%d uid: %d hello word”, getpid(), getuid());

//将pid、uid、得到的值和“hello word”写入到buf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串处理