【发布时间】:2020-11-25 12:40:33
【问题描述】:
我是 C 新手,当用户输入非字母键时,该程序应该输出 usage: ./substitution key。在密钥长度小于 27 个字母的情况下,它应该输出一条消息,即密钥长度必须为 26 个字母。如果用户没有输入,则生成第一条错误消息。不提供任何输入正在工作,并打印有效的错误消息。但是,如果我尝试提供其他输入,即向数组添加字符,则会显示分段错误。你能帮帮我吗?
#include<stdio.h>
#include<cs50.h>
#include<string.h>
#include<ctype.h>
int main(int argc, char*argv[argc])
{
int counter = 0;
if (argc==1)
{
printf("Usage: ./substitution key\n");
}
for (int i = 1;i <= argc; i++)
{
if (isalpha(argv[i]) != 0)
continue;
else
counter++;
}
if (counter>1)
printf("Usage: ./substitution key\n");
else if (argc!=27 && argc!=1)
printf("key must contain 26 characters.\n");
}
【问题讨论】:
-
argv是字符串数组,而不是字符数组。isalpha(argv[i])无效。 -
char*argv[argc]应该是char*argv[] -
谢谢!我会改变的
标签: arrays c segmentation-fault command-line-arguments cs50