所以我尝试从格式如下的文件中读取输入:
0 3 4 1
1 2 4
2
3
4 2
我在这里编写的一段代码:
for (int i = 0; i < 5; i++){
if (fgets(line, MAX_LEN, in) != NULL){
printf("\n%s\n", line);
int length = strlen(line);
printf("line = %d\n", length);
for (int j = 2; j < length; j+=2){
char a;
a = line[j];
int u = a - '0';
printf("line[%d] = %d\n", j, u);
}
}
}
非常粗糙,但可以处理上述单位数字类型输入,但是我需要它来处理两位数字值。我考虑过使用 sscanf() 但行输入可以包含任意数量的值,所以我不知道调用它多少次。任何帮助都会很棒,因为我不知所措......谢谢!
最佳答案
我建议你使用strtol
以下是如何使用它的示例:
#include <stdio.h>
#include <string.h>
int main() {
char str[20]="1 8 0 8 99"; // or your line
char *pt;
int numbers[10]; // array to read the numbers
int index = 0, i;
numbers[index] = strtol(str, &pt, 10); // decimal numbers
index++;
while(*pt !='\0' )
{
numbers[index] = strtol(pt, &pt, 10);
index++;
}
for(i=0; i<index; i++) printf("%d ", numbers[i]);
return 0;
}
此示例中的输出将是:
1 8 0 8 99
现在我让您将 strtol
集成到您的实际程序中,祝您好运:)
关于c - 将可变长度字符串数组读取为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24072837/