gpt4 book ai didi

c - 指针和数组的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 15:55:04 27 4
gpt4 key购买 nike

我是 C 语言新手。

我试图获取一个 char 数组(一个字符串)并通过分隔符将其分解为 2 个字符串。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
char line_array[260];
char *line = line_array;
scanf("%s", line_array);
char *line2 = strdup(line);
char *command = strtok(line2, " "); // WORKS FINE = open
printf("%s %c\n", command, *(line+4)); // PRINTS: open (prints only command, *(line+4) is empty)
return 0;
}

在获得字符串的第一部分(其中显示“工作正常=打开”)后,我想要实现的目标是打印从 command_array[strlen(command)] 到数组末尾的所有字符,但我尝试过的方法都不起作用。

最佳答案

读完你的新更新问题和代码后,我终于知道你的问题了。问题是你获取字符串的方法,scanf将字符串读入缓冲区,但它将空白或CR/LF视为新的输入开始。根据你的需要,你输入“abcdefg 9”,scanf("%s",value)只会得到abcdefg值,并且将“9”留在标准输入缓冲区中。因此,您需要使用 gets(value) 获取所有输入,然后使用 strtok

关于c - 指针和数组的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541810/

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