您好我正在制作一个程序来显示以下内容,如果说' ./ prog7x你好那里'输入为命令行参数:
argument 0 is "./prog7x", has length 8, contains 5 alphabetic characters
argument 1 is "hello", has length 5, contains 5 alphabetic characters
argument 2 is "there", has length 5, contains 5 alphabetic characters
Total length 18: ./prog7xhellothere
我在计算字母字符方面遇到了麻烦。 我有一个功能来获得长度,但我不知道如何显示长度完成后计算的角色..这里的程序到目前为止...我已经#ve; ve只编写了几个月,所以任何建议都表示赞赏!
#include <cctype> //isalpha
#include <cstdio>
#include <cstring> //strlen
#include <cstdlib>
//Function to display what argument we're on
void displayArgument(char* arr1[],int num);
//Funtcion to get the length of a command line argument then,
//display number of alphabetical characters it contains
void displayLength(char* arr[],int length);
//Function to count the total length, concatenate together,
//and display results
//void displayTotalCat(char* arr2[],int total);
int main(int argc, char* argv[])
{
displayArgument(argv,argc);
displayLength(argv,argc);
return 0;
}
//Function to display what argument we're on
void displayArgument(char* arr1[],int num)
{
for(int i=0; i<num; i++) {
printf("Argument %d is ",i); //what argument we're on
printf("'%s'\n",arr1[i]);
}
}
//Funtcion to get the length of a command line argument then,
//display number of alphabetical characters it contains
void displayLength(char* arr[],int length)
{
for (int l=0; l<length; l++) { //what length that position is
int len=strlen(arr[l]); //what is the length of position l
printf("Length is %d,\n",len); //print length
for(int j=0; j< len ;j++) {
int atoi(strlen(arr[l][j]));
printf("Contains %d alphabetical characters",arr[l][j]);
}
}
}
//Function to count the total length, concatenate together,
//and display results
//void displayTotalCat(char* arr2[],int total)
答案 0 :(得分:0)
如果您只是想要结果,请跳到最后,但让我们一起来看看。以下是代码中存在问题的部分:
for(int j=0; j< len ;j++) {
int atoi(strlen(arr[l][j]));
printf("Contains %d alphabetical characters",arr[l][j]);
}
目前,您正在循环中打印。所以,让我们把这部分拉出来:
for(int j=0; j< len ;j++) {
int atoi(strlen(arr[l][j]));
}
printf("Contains %d alphabetical characters",arr[l][j]);
大。此外,我们不能再在循环之外打印arr[l][j]
( j 超出scope),因此我们需要预先声明某种变量。这也有助于我们计算,因为当我们确定一个字符是字母数字时我们想要添加到这个变量:
int alphas = 0;
for(int j = 0; j < len; j++) {
if(????){
alphas = alphas + 1;
}
}
printf("Contains %d alphabetical characters", alphas);
请注意,我还将您的代码格式化了一点。通常,程序员遵循有关空格,缩进,命名等的规则,以使其他人更容易阅读代码。那么,我们如何确定一个字符是否是字母数字?我们可以使用一系列if语句(例如if(arr[l][j] == '1')
等),但这不是很聪明。你正好看看isalpha
!首先,将其添加到文件的顶部:
#include <ctype.h>
然后,您应该能够像这样调用isalpha
函数:
int alphas = 0;
for(int j = 0; j < len; j++) {
if(isalpha(arr[l][j])){
alphas = alphas + 1;
}
}
printf("Contains %d alphabetical characters", alphas);