字串的讀入與輸出
阿新 • • 發佈:2022-12-04
一、\(scanf\)函式使用
1、不帶空格的字串
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
char a[110];
scanf("%s",a);
printf("%d\n",strlen(a));
for(int i=0;i<strlen(a);i++)
printf("%c",a[i]);
return 0;
}
2、帶空格的字串
#include<cstring> #include<cstdio> using namespace std; int main(){ char a[110]; scanf("%[^\n]%*c",a); //利用正則表示式一直讀取到\n為止,並且清除最後一個緩衝 printf("%d",strlen(a)); return 0; }
二、\(sscanf\)函式使用
1、按字串規定格式讀取
【整數】
#include <cstdio>
using namespace std;
int main() {
int year, month, day;
int cnt = sscanf("20191103", "%04d%02d%02d", &year, &month, &day);
printf("cnt=%d, year=%d, month=%d, day=%d\n", cnt, year, month, day);
return 0;
}
【浮點數】
#include <cstdio> using namespace std; int main() { double longitude, latitude; int cnt = sscanf("113.123456789 31.123456789", "%lf %lf", &longitude, &latitude); printf("cnt=%d, longitude=%.9lf, latitude=%.2lf\n", cnt, longitude, latitude); return 0; }
2、讀取部分內容
讀取數字
#include <cstdio>
using namespace std;
int main() {
char str[32] = "";
// 31表示共32個字元,最後一位留給\0
sscanf("123456abcdedf", "%31[0-9]", str);
printf("str=%s\n", str); //輸出123456
return 0;
}
讀取數字+字串
#include <cstdio> using namespace std; int main() { char str[32] = ""; int ret = sscanf("123456abcdedf", "%31[0-9a-z]", str); printf("res=%d str=%s\n", ret, str); return 0; }
不要指定內容
#include <cstdio>
using namespace std;
int main() {
char str[32];
sscanf("123456abcdedf", "%31[^a-z]", str);
printf("str=%s\n", str);
return 0;
}
三、\(sprintf\)函式使用
拼接字串
#include <cstdio>
using namespace std;
const double PI = 3.1415926;
int main() {
char str[80];
sprintf(str, "Pi= %lf", PI);
puts(str);
return (0);
}
其它常見用法
//把整數123 列印成一個字串儲存在s 中。
sprintf(s, "%d", 123); //產生"123"
//可以指定寬度,不足的左邊補空格:
sprintf(s, "%8d%8d", 123, 4567); //產生:" 123 4567"
//當然也可以左對齊:
sprintf(s, "%-8d%8d", 123, 4567); //產生:"123 4567"
//也可以按照16 進位制列印:
sprintf(s, "%8x", 4567); //小寫16 進位制,寬度佔8 個位置,右對齊
sprintf(s, "%-8X", 4568); //大寫16 進位制,寬度佔8 個位置,左對齊