一、返回值
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;
}