c - 无法重命名包含命令行参数的字符串
问题描述
我对 C 非常陌生(使用 C 已经 2 天了),过去 30 个小时我都在教程点和一些随机的 youtube 视频上,但对于我的生活,我无法弄清楚如何命名在我在命令行中给出的字符串上。
所以我有一个文件filename.c
,然后是三个参数
./filename.c F22 G2
我知道中的第二个参数argv
,即argv[1]
包含字符串F22
和argv[2]
包含G2
。我不想将这两个字符串重命名为str1
and str2
。
当我这样做并尝试打印str1
时,我得到了很多奇怪的字符而不是F22
。我在搞砸什么?请参阅下面的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char* argv[])
{
char* str1[] = {argv[1]};
char* str2[] = {argv[2]};
printf("%s\n", str1);
return 0;
}
任何帮助表示赞赏。
解决方案
定义
char* str1[] = {argv[1]};
定义str1
为一个单一char *
元素的数组,并且该单一元素是argv[1]
.
重要的部分是它str1
不是一个字符串,它是一个字符串数组。
要定义一个字符串,您需要删除大括号(方括号和花括号):
char* str1 = argv[1]; // Define str1 as an alias for argv[1]
当然,您可以argv[1]
直接使用:
printf("%s\n", argv[1]);
对于不应修改的字符串,建议对其进行const
限定:
const char* str1 = argv[1]; // Define str1 as an alias for argv[1]
推荐阅读
- javascript - JS:从文件夹中选择任何头像
- java - 什么是 Java 中的源代码兼容性?
- android - 问题扩展 BaseActivity() (Kotlin)
- python - Python Web Scraper - 访问 Web 数据的问题 [PHP 错误]
- lua - 在 Lua 中将 .csv 文件转换为 2D 表
- git - git pull 上游的上游,然后再拉到上游
- python - 如何获得python乌龟中一组坐标处的颜色?
- javascript - 使用 JQuery 问题更改背景颜色
- state - Preact:如果在组件数组中,状态为 prop 的子组件不会在状态更改时重新呈现
- rest - 如何使用 REST API 在 Sharepoint 中一次创建多个项目?