gpt4 book ai didi

c - argv[] 中的 Int 中断并仅打印 int

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:33 25 4
gpt4 key购买 nike

所以我知道这是基础知识,但我不知道在哪里可以找到正确的答案。问题是我需要运行一个程序,参数 -s 后跟一个数字,告诉它从输入中跳过多少个字符,假设我们这样做(我在 bash 中运行它):

echo "hue" |./prog -s 2

然后应该只打印 e 但 shell 却给我

2someone@somewhere:

此时我被困了几个小时无法弄清楚,请帮忙。

int main(int argc, char *argv[]) {
char s;
char input[8196];
int i = 0;
/* above initialized are variables needed for the root of the program to work */
int s_num = 0; /* "-s" or skip */
int cnt_1; /* lvl1 counter */
/* Getting input */
while ((s = getchar()) != EOF) {
input[i] = s;
printf("%d\n", i);
i++;
}

/* If calling w/o arguments, the only thing that works */
if (argc == 1) {
//do stuff
}

/* Argument Check */
if (argc > 1) {
printf("1\n");
for (cnt_1 = 0; cnt_1 < argc; cnt_1++) {
printf("2\n");

if (strcmp(argv[cnt_1], "-s") == 1) {
printf("3.1\n");
int pom = cnt_1 + 1;
int bqs = 0;
for (int i = 0; argv[pom][i] != '\0'; ++i) {
bqs *= 10; bqs += argv[pom][i] - '0';
}
s_num = bqs;
}
...

最佳答案

第一个参数,即 argv[0]包含可执行文件的名称。因此,从数组 argv[1] 的第二个元素开始搜索参数然后从那里开始。

for (cnt_1 = 1; cnt_1 < argc; cnt_1++)
// ^ change 0 to 1 here

如果,正如您在评论中所说,不允许您使用 <string.h> , 那么也许你可以执行 char通过 char argv[] 的字符串数组中包含的每个字符串的比较当你经历你的循环时:

...
if((argv[cnt_1][0] == '-') && (argv[cnt_1][1] == 's'))//argument "-s" found, handle it
{
...

关于c - argv[] 中的 Int 中断并仅打印 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com