如何在 C 中将字符串 argv[] 赋给 int 数组?

问题描述 投票:0回答:1

我是写stackoverflow问题的初学者,所以如果我有错误,请告诉我。

如何将 argv 数据分配给 int 数组,如下所示:

#include <cs50.h>
#include <stdio.h>

int list[];

int main(int argc, string argv[])
{
    for (int i = 1; argv[i][i] != '\0'; i++)
    {
        list[i] = argv[i];
    }

该脚本在第 10 行出错 错误信息:

selection.c:10:17: error: incompatible pointer to integer conversion assigning to 'int' from 'string' (aka 'char *') [-Werror,-Wint-conversion]
        list[i] = argv[i];

我尝试了这个脚本,我希望它可以工作并且分配没有错误

c cs50
1个回答
0
投票
  1. 您尝试将字符串 (argv[i]) 分配给整数 (list[i]),这导致您遇到错误。
  2. 您还没有指定数组list[]的大小。
#include <stdio.h>
#include <stdlib.h> // for atoi

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("Usage: %s <num1> <num2> ...\n", argv[0]);
        return 1;
    }

    int list[argc - 1]; // Size of the array is argc - 1
    
    for (int i = 1; i < argc; i++) {
        list[i - 1] = atoi(argv[i]); // Convert string to integer
    }
    
    // Printing the integers stored in the array for verification
    for (int i = 0; i < argc - 1; i++) {
        printf("list[%d] = %d\n", i, list[i]);
    }

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.