1.输出数据
- printf():向屏幕输出数据
- sprintf():向字符串输出数据,把输出的数据保存到字符串
- fprintf():输出数据到文件
举例:
int main() {
char str[20];
FILE* fp = fopen("D:\\a.txt", "w");
assert(fp != NULL);
//printf("%.3lf", 12.345);
sprintf(str, "%.3lf",12.345);//把12.345变成字符串“12.345”保存到str中
printf("%s", str);
fprintf(fp,"%s",str);
fclose(fp);
return 0;
}
把整型数值转为十六进制字符串(利用sprintf()函数):
int main() {
int a = 123456789;
//把a转为十六进制字符串
char str2[20];
//printf("%x\n", a);
sprintf(str2, "%x,%X", a,a);
printf("%s\n",str2);
return 0;
}
%x,%X:x大小写对应转化为十六进制后的字母大小写。
利用sprintf实现字符串相加:
int main() {
const char* str1 = "hello ";
const char* str2 = "world";
char str3[30];
sprintf(str3, "%s%s", str1, str2);
printf("%s", str3);
return 0;
}
2.读取数据
- scanf():从命令行上读取数据
- sscanf():从字符串中读取数据
- fscanf():从文件中读取数据
scanf()举例
int main()
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
sscanf(tokenstring, "%80s", s);
sscanf(tokenstring, "%c", &c);
sscanf(tokenstring, "%d", &i);
sscanf(tokenstring, "%f", &fp);
printf("String = %s\n", s);
printf("Character = %c\n", c);
printf("Integer: = %d\n", i);
printf("Real: = %f\n", fp);
}
fscanf()举例
int main()
{
FILE* fp = fopen("D:\\a.txt", "r");
while (!feof(fp)) {
char buffer[100] = { 0 };
fscanf(fp, "%s", buffer);
printf("%s\n", buffer);
}
// 关闭文件
fclose(fp);
return 0;
}
编程题:如何判断合法的IP地址?尽可能考虑各种情况
例:192.168.0.1(由3个点号分隔4个数字,每个数字在0-255之间)
bool IP(const char* str) {
int arr[5] = { 0 };
int len=sscanf(str,"%d.%d.%d.%d.%d", &arr[0], &arr[1], &arr[2], &arr[3],&arr[4]);//从字符串str中提取数字到数组
if (len != 4)
return 0;
for (int i = 0; i < 4; i++) {
if (arr[i] < 0 || arr[i]>255)
return false;
if (arr[0] ==0)
return false;
}
return true;
}
int main() {
const char* ip = "192.168.0.1";
if (IP(ip))
printf("合理");
else
printf("不合理");
return 0;
}