首页 > 解决方案 > 拆分单个输入并存储在单个变量中

问题描述

我正在尝试拆分单个输入并存储在单独的变量中。

下面是我的代码:

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 的名称和carinstring的值,mileage以便float输出如下所示:

polo 15.5

标签: csplit

解决方案


问题是它会%s扫描所有内容,直到一个空白字符,而不是一个'@'字符。

您可以使用%[格式说明符来获得所需的内容:

scanf("%[^@]@%f", car, &mil);

%[^@]告诉scanf扫描所有内容,直到@.


旁注:您应该始终检查*scanf. 它们返回成功扫描和分配的元素数量。此外,您还可以使用长度修饰符(%49[^@]在您的情况下)来防止缓冲区溢出。


推荐阅读