gpt4 book ai didi

c - 如何将字符串传递给C中的函数

转载 作者:行者123 更新时间:2023-11-30 20:24:03 26 4
gpt4 key购买 nike

我正在尝试处理字符串以更改文件中的某些内容。我从文件中读取了一个字符串,其中包含命令和参数,并用空格字符分隔。我用标记分隔了这个数组。

现在我想传递第二个标记,它是函数的参数。我的问题是,当我运行程序时,屏幕卡住并且没有任何反应。这是我的分离方式和函数的调用。

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

void create_file(char *argument)
{
//some code goes here
}

int main()
{
int i = -1;
char *token[5];
char command[20];
const char delim[1] = " ";
FILE *fin;

fin = fopen("mbr.op", "r");

while(fscanf(fin, "%[^\n]", command) == 1)
{
i = -1;
token[++i] = strtok(command, delim);
while(token[i] != NULL)
token[++i] = strtok(NULL, delim);
if(strcmp(token[0], "CREATE_FILE") == 0)
create_file(token[1]);
}
fclose(fin);
return 0;
}

最佳答案

您有一些错误,第一个command[20]是一个未初始化的字符串,这将导致未定义的行为。其次,您未能检查第一个参数和第二个参数,因此我在注释处添加了一个测试。另外,字符串不够长,所以我删除了长度。最后,我测试传递给函数的 NULL 指针。

编辑代码已添加到问题中,以显示command[20]已初始化,但它仍然太短,无法获取命令和合理的文件名(感谢@ameyCU)。

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

void create_file(char *argument)
{
if(argument == NULL)
printf("NULL pointer\n");
else
printf("Arg: %s\n", argument);
}

int main(void)
{
int i = -1;
char *token[5];
char command[] = "CREATE_FILE myfile.txt";
const char delim[] = " ";

token[++i] = strtok(command, delim);
while(token[i] != NULL)
token[++i] = strtok(NULL, delim);
if(token[0] != NULL && strcmp(token[0], "CREATE_FILE") == 0) // added test
create_file(token[1]);
return 0;
}

程序输出

Arg: myfile.txt

关于c - 如何将字符串传递给C中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481887/

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