c - 拆分单个输入并存储在单个变量中
问题描述
我正在尝试拆分单个输入并存储在单独的变量中。
下面是我的代码:
int main() {
float mil;
char car[50];
scanf("%s@%f", car, &mil);
printf("%s %f", car, mil);
return 0;
}
输入:
polo@15.5
程序的输出:
polo@15.5 0.000000
如何存储 in 的名称和car
instring
的值,mileage
以便float
输出如下所示:
polo 15.5
解决方案
问题是它会%s
扫描所有内容,直到一个空白字符,而不是一个'@'
字符。
您可以使用%[
格式说明符来获得所需的内容:
scanf("%[^@]@%f", car, &mil);
%[^@]
告诉scanf
扫描所有内容,直到@
.
旁注:您应该始终检查*scanf
. 它们返回成功扫描和分配的元素数量。此外,您还可以使用长度修饰符(%49[^@]
在您的情况下)来防止缓冲区溢出。
推荐阅读
- python - C++ 对 Python 的扩展——安全的内存访问和内存布局
- sprite - 在 2-D 游戏中碰撞时,什么可能导致精灵停止定向运动(精灵仍然有动画)?
- php - 如何通过读取文件来动态添加 cron 作业,而与服务器无关
- scala - Spark scala:如何使用 Column 分解代码?
- apache-kafka - 卡夫卡客户端兼容性
- javascript - 如何在 Firebase Auth 中添加或更新 phone_number
- javascript - Angular Library using HTML of component of app
- r - cmdstanR:对伯努利参数的推断
- r - 有没有一种更快的方法可以将一个数据帧的列与其他数据帧的行相加而没有循环
- algorithm - 关于 Google Code Jam 2019 第 1C 轮问题 1 解决方案的说明