gpt4 book ai didi

c - C中一行输入不同的值

转载 作者:行者123 更新时间:2023-11-30 18:39:11 25 4
gpt4 key购买 nike

我想从一行读取类似“24a10b9100”的内容。问题是,如果我最后使用这些函数之一(fgetsgetchar 等),输入只是一个字符串。但我想将数字读取为数字,将字符读取为字符。

最佳答案

您可以使用 sscanf%n 说明符前进字符串。 %n 说明符将告诉您扫描处理了多少个字符。可以将其添加到 offset 以在字符串中移动。它还可用于检测何时应将一个整数拆分为两个整数。
扫描集 %79[^0-9\n] 将扫描最多 79 个非数字或换行符的字符。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
char input[80] = {"24a10b9100"};
char nondigit[80] = {0};
int digit = 0;
int thousands = 0;
int offset = 0;
int used = 0;
int length = 0;
length = strlen ( input);
while ( offset < length) {
if ( ( sscanf(input + offset, "%79[^0-9\n]%n", nondigit, &used)) == 1) {//scan for non digit string
offset += used;//add characters used by scan to offset
printf ( "not number %s\n", nondigit);
}
if ( ( sscanf(input + offset, "%d%n", &digit, &used)) == 1) {
offset += used;
if ( used > 3) {//scanned more than three digits, split the integer
thousands = digit / 1000;
digit %= 1000;
printf ( "thousands %d\n", thousands);
printf ( "number %d\n", digit);
}
else {
printf ( "number %d\n", digit);
}
}
}
return 0;
}

关于c - C中一行输入不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com