一、返回值
1、scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s
1-3)成功赋值的接收参数的数量(可以为零,在首个接收用参数赋值前匹配失败的情况下),或者若输入在首个接收用参数赋值前发生失败,则为EOF。
4-6)同 (1-3) ,除了若有运行时制约违规,亦返回 EOF 。
2、printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s
1,2)传输到输出流的字符数,或若出现输出错误或编码错误(对于字符串和字符转换指定符)则为负值。计算’\0’空终止符
3)写入到 buffer 的字符数(不计空终止字符),或若输出错误或编码错误(对于字符串和字符转换指定符)发生则为负值。
4)假如忽略 bufsz 则本应写入到 buffer 的字符数(不计空终止字符),或若出现输出错误或编码错误(对于字符串和字符转换指定符)则为负值。
5,6)传输到输出流的字符数,或若出现输出错误、运行时制约违规错误或编码错误则为负值。
7)写入到buffer的字符数,不计空终止字符(只要 buffer 不是空指针且 bufsz 非零且不大于 RSIZE_MAX ,就写入它),在运行时制约违规时为零,而在编码错误时为负值。
8)假如忽略 bufsz 则本应写入 buffer 的字符数的,不包含空终止字符(只要 buffer 不是空指针而 bufsz 非零且不大于 RSIZE_MAX ,就写入它),或若出现输出错误、运行时制约违规错误或编码错误则为负值。
3、fgetc, getc
成功时为获得的字符,失败时为 EOF 。
若文件尾条件导致失败,则另外设置 stream 上的文件尾指示器(见 feof() )。若某些其他错误导致失败,则设置 stream 上的错误指示器(见 ferror() )。
4、getchar, putchar, gets, puts
1,2)成功时为获得的字符,失败时为 EOF 。
3)成功时为 str(char*) ,失败时为 NULL 。
4)成功时返回非负值
5、cin, cout
cin,cout是C++的标准输入/出流,其本身是一个对象,并不存在返回值的概念。
while(cin>>a)的调用,这里并不是cin的返回值,而是>>操作重载函数。istream& operator>>(istream&, T &);的返回值,其中第二个参数由cin>>后续参数类型决定。
其返回值类型为istream&类型,大多数情况下其返回值为cin本身(非0值),只有当遇到EOF输入时,返回值为0。输入EOF的方法,windows下输入ctrl+z, Linux下输入ctrl+d。
二、格式符%s
1、输出
int main()
{
const char *str = "123";
printf("%s", str);//输出123
printf("\n");
char str1[20] = {'4','5','6','\0','7','8'};
printf("%s", str1);//输出456,遇到结束符\0停止输出
printf("\n");
string str2 = "321";
//错误 printf("%s", str);
printf("%s", str2.c_str()); //输出321
return 0;
}
2、输入
int main()
{
cout << "---------第一个---------" << endl;
char str[21];
scanf("%s", str);
getchar();
scanf("%c", str);//修改第一个字符
scanf("%c", &(str[1])); //修改第二个字符
cout <<"输出:"<< str<<endl;
cout << "---------第二个---------"<<endl;
char *str1=(char *)malloc(21*sizeof(char));
scanf("%s", str1);
getchar();
scanf("%c", str1);//修改第一个字符
scanf("%c", &(str1[1])); //修改第二个字符
scanf("%c", str1+2); //修改第三个字符
scanf("%s", str1 + 3);//修改第四个及以后的字符
cout << "输出:" << str1;
free(str1);
return 0;
}