gpt4 book ai didi

c - 如何在 C 中正确清空字符串(字符数组)?

转载 作者:行者123 更新时间:2023-11-30 16:14:56 24 4
gpt4 key购买 nike

我使用了一个名为“comando ”的字符串作为输入。我将“comando”的第一个单词复制到“comandoParz”中,并使用“comandoParz”作为参数来调用特定函数。

第一个调用工作正常,但第二个调用提供与第一个调用相同的输出。

也许是因为我需要清空数组“comando”和“comandParz”,但我尝试了一些解决方案,但似乎都不起作用。

我将在下面包含完整的代码。

(抱歉,如果我添加了太多代码;我仍在尝试找出在此处发布的最佳方式。)

我尝试添加 strcpy(comandoParz, "")strcpy(comando, "") (它们在我下面发布的代码中不活跃)并且第一个输入有效,但其他输入没有给出任何输出。

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

void addrel() {
printf("\nAGGIUNGI RELAZIONE:\n\n");
}

void delrel() {
printf("\nELIMINA RELAZIONE:\n\n");
}

void addent() {
printf("\nAGGIUNGI UTENTE:\n\n");
}

void delent() {
printf("\nELIMINA UTENTE:\n\n");
}

int main() {

int i = 0;
char comando[100];
char comandoParz[10];

START:

/*strcpy(comando, "");
strcpy(comandoParz, "");*/

printf("Input: ");
fgets(comando, sizeof(comando), stdin);

while(comando[i] != '\0') {
comandoParz[i] = comando[i];
i++;
}
i++;

if(strcmp(comandoParz, "delent\n") == 0) {
delent();
} else {
if(strcmp(comandoParz, "addent\n") == 0) {
addent();
} else {
if(strcmp(comandoParz, "addrel\n") == 0) {
addrel();
} else {
if(strcmp(comandoParz, "delrel\n") == 0) {
delrel();
}
}
}
}

goto START;
}

例如,第一个输入可能是“addrel”,输出将为“AGGIUNGI RELAZIONE:”。第二个输入可能是“delent”,答案应该是“ELIMINA UTENTE:”,但第一个调用将是“AGGIUNGI RELAZIONE”。

最佳答案

  • 代码需要在 START 循环内将 i 重新初始化为 0

  • C 字符串需要以 0 结尾。

  • 复制循环在复制时需要注意不要覆盖目标数组。

考虑到以上所有因素

while(comando[i] != '\0') {
comandoParz[i] = comando[i];
i++;
}
i++;

可能看起来像:

i = 0;
while (comando[i] != '\0'
&& i < (sizeof comandoParz -1)) /* one less for the '\0'-terminator */
{
comandoParz[i] = comando[i];
i++;
}
comandoParz[i] = '\0'; /* place the '\0'-terminator */
<小时/>

回答你的问题

how to properly empy a string

您可以使用'\0'memset它:

memset(comandoParz, '\0', sizeof comandoParz);

尽管对于所有需要 C 字符串的方法,将 '\0' 放入您希望字符串结束的数组元素中即可。

因此,要“清空”它,只需在其第一个元素中放置 '\0' 即可:

comandoParz[0] = '\0';

关于c - 如何在 C 中正确清空字符串(字符数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337672/

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