我正在学习C编程,希望掌握scanf功能。
#include<stdio.h>
int main() {
char s1[20], s2[20];
scanf("%[^0-9]s%[0-9]s",s1,s2); // [^0-9] stops assging when encounters
// [0-9] expects only 0-9 and assigs
puts(s1);
puts(s2);
return 0;
}
运行程序:
asdasd123123
asdasd
ç£nU
我哪里错了?
答案 0 :(得分:1)
您的scanf()
语法稍微偏离了一点:
int main() {
char s1[20], s2[20];
scanf("%[^0-9]%[0-9]", s1, s2); // [^0-9] stops assging when encounters
// [0-9] expects only 0-9 and assigs
puts(s1);
puts(s2);
return 0;
}
检查scanf()
的返回值肯定是个好主意,特别是在尝试读入多个变量时,看看实际分配的值有多少。
#define NUM_ARGS 2
int main() {
char s1[20], s2[20];
int ret;
if ((ret = scanf("%[^0-9]%[0-9]", s1, s2)) != NUM_ARGS) {
printf("ERROR\n");
} else {
puts(s1);
puts(s2);
}
return 0;
}