c - 将可变长度字符串数组读取为整数

标签 c arrays string int scanf

所以我尝试从格式如下的文件中读取输入:

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/

相关文章:

c - 尝试更改内存地址处的值时出现段错误

java - 将子类添加到 java 数组并稍后将它们拉出来

c# - 为单行文本生成缩进字符串

java - 如何将字符转换为字符串?

java - 将 String 设置为可点击的 URL

c - C程序解释中的二项式系数

c - 在 MacOSX 上使用 Tcl/Tk C API 时,为什么它会在环境中执行?

javascript - Angular Js : Scope Arrays

c - 如何在cooja中创建makefile?

arrays - 为什么 println!仅适用于长度小于 33 的数组?