c - 如何使用命令行参数输入数据并将数据转换为大写
问题描述
我试图弄清楚如何使用我在命令行中输入的数据并使用它将我的数据转换为大写字母。我是 C 的新手。这是代码。谁能告诉我我做错了什么?我正在尝试通过使用动态内存分配将任何小写单词转换为大写。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char*argv[]){
int i;
char * string;
//Dynamic Memory Allocation
string = (char*)malloc(argc * sizeof(char));
for (i=1; i<argc; i++){
printf("%s\n",argv[i]);
}
strcpy(string, argv[i]);
for (i = 1; string[i] != '\0'; i++){
if(string[i] >= 'a' && string[i] <= 'z'){
string[i] = string[i] - 32;
}
}
return 0;
}
解决方案
有几个错误
首先
string = (char*)malloc(argc * sizeof(char));
argc
给出参数的数量,而不是字符串的长度。要获取argv[1]
参数的长度,请使用strlen
len = strlen(argv[1]);
string = malloc (len+1);
第二
strcpy(string, argv[i]);
argv[0]
通常是程序名称。argv[1]
将给出第一个参数的名称。您还可以添加检查argc
以查看用户是否添加了参数。如果您要输入一个参数,则可以将其更改为,
if (argc == 2)
{
strcpy(string, argv[1]);
}
else
{
//report error to user
}
- 第三
您指的是从 1 开始的索引。在 C 中,索引从 0 开始。
for (i = 0; string[i] != '\0'; i++){
if(string[i] >= 'a' && string[i] <= 'z'){
string[i] = string[i] - 32;
}
}
推荐阅读
- google-sheets - 用于 Google Sheets + Google Data Studio 的数组中的 GOOGLEFINANCE 公式
- javascript - 如何在 Nuxt 中使用 vue-tel-input-vuetify?
- node.js - 使用nodeJS 14通过lambda将大尺寸图像文件从S3上传到云应用程序
- android - 无法在颤动中加载资产(图像)
- node.js - 具有 Firefox 配置文件的 Webdriver 无法以状态码 0 启动
- python - 如何从 SQLAlchemy 的子查询中选择不在 Group By 中的列?
- javascript - 谷歌启动问题的 Javascript 代码中的运行时错误
- docker - jenkins 管道不会在 dockerhub 中提取图像
- python - 为什么打印和导出到 .csv 文件时输出不同?
- authentication - Power BI 可以使用 LDAP 进行身份验证吗?