C assign string from argv[] to char array

↘锁芯ラ 提交于 2019-12-02 12:18:35

You must copy the string into the char array, this cannot be done with a simple assignment.

The simplistic answer is strcpy(filename, argv[1]);.

There is a big problem with this method: the command line parameter might be longer than the filename array, leading to a buffer overflow.

The correct answer therefore:

if (argc < 2) {
    printf("missing filename\n");
    exit(1);
}
if (strlen(argv[1]) >= sizeof(filename)) {
    printf("filename too long: %s\n", argv[1]);
    exit(1);
}
strcpy(filename, argv[1]);
...

You might want to output the error messages to stderr. As a side note, you probably want to choose English or German, but not use both at the same time ;-)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!