gpt4 book ai didi

c - 从字符串数组中的字符串中删除空格

转载 作者:行者123 更新时间:2023-11-30 14:43:31 35 4
gpt4 key购买 nike

我目前正在开发一个项目,该项目从输入文件中读取字符串并将它们存储到数组中。当它存储到数组中时,我想删除空格,以便可以将数组中的字符串与数组 stringcards 进行比较,并检查输入文件中的所有卡片是否都在那里。

但我目前一直坚持存储新字符串,而数组中没有空格并将它们打印出来。它打印出第一个字符串REDA,但之后我收到了段错误。

如果有人能给我任何关于如何将卡片数组中的字符串与常量数组进行比较并检查所有卡片是否都在数组中的提示,我也将不胜感激。

我希望这是正确的方法。

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

const char * stringcard[] = { "REDA","RED2"
"RED3"
"RED4"
"RED5"
"RED6"
"RED7"
"RED8"
"RED9"
"RED10"
"REDJ"
"REDQ"
"REDK"
};

int main (int argc, char **argv) {

char *reds[13];
char * cardarray[13];

int i;

FILE *file = argc > 1 ? fopen (argv[1], "r") : stdin;
if (file == NULL)
return 1;
if(argc!=2) {
printf("[ERR]");
return 0;
}

for (i =0; i < 13; i++) {

reds[i] = malloc( 8);
fgets(reds[i], 8, file);

}

int i2 = 0;
for (i =0; i < 13; i++) {

printf ("%s", reds[i]);

}

for(i= 0; i<13; i++) {
char *p = strtok (reds[i], " ");


while (p != NULL)
{
cardarray[i2++] = p;
p = strtok (NULL, " ");
}
}

for (i =0; i < 13; i++) {

printf ("%s", cardarray[i]);

}


return 0;
}

输入文件:

RED A
RED 2
RED 3
RED 4
RED 5
RED 6
RED 7
RED 8
RED 9
RED 10
RED J
RED Q
RED K

最佳答案

只需删除不需要的字符即可。这里有两个函数:

第一个算法要快得多。第二个较慢但易于理解

#include <stdio.h>
#include <string.h>
<小时/>
char *removechar(char *str, int ch)
{
char *cptr = str, *readptr = str;

while(*readptr)
{
if(*readptr == ch)
{
readptr++;
}
else
{
*cptr++ = *readptr++;
}
}
*cptr = 0;
return str;
}
<小时/>
char *removechar(char *str, int ch)
{
char *cpos = str;

while((cpos = strchr(cpos, ch)))
{
strcpy(cpos, cpos + 1);
}
return str;
}
<小时/>

关于c - 从字符串数组中的字符串中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884951/

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