gpt4 book ai didi

c - 如何修剪该数组中的空格(右侧)?

转载 作者:行者123 更新时间:2023-11-30 20:58:07 28 4
gpt4 key购买 nike

您好,我在用 C 语言解决编程任务时遇到问题。

The funktion "Trim" should replace all spaces at the end of a String with null. As parameter it gets a string but it dosent need to return anything.

The second funktion "countSpaces" should count all spaces in an Array. As parameter it gets a 2 dementional Array and it should return the number of spaces in the Array.

Other Headers arent allowed.

德语原文:

Die erste Funktion Trim soll alle Leerzeichen am Ende einer Zeichen- kette löschen (d.h. mit dem ASCII-Wert 0 überschreiben). Als Parameter wird die Zeichenkette übergeben. Die Funktion gibt nichts zurück.

Die zweite Funktion countSpaces soll alle Leerzeichen in einem Array von 10 Zeichenketten mit je maximal 50 Zeichen zählen. Als Parameter erhält es ein zweidimensionales Array von Zeichen. Das Funktions-ergebnis ist die Anzahl der Leerzeichen in allen Zeichenkette des Arrays von Zeichenketten.

Weitere Headerdateien sind nicht erlaubt

#include <stdio.h>

int main()
{
char Text[10][50] = {"Dies ist ein langer ",
"Text, der in mehreren ",
"Zeilen untergebracht ",
"ist und der auch noch ",
"in manchen Zeilen mehrere",
"Leerzeichen am Ende ",
"beinhaltet! Die Leer- ",
"zeichen dieses Textes ",
"sollen gezählt werden! ",
" "};
int i = 0;
for (i = 0; i < 10; i++)
Trim(Text[i]);
printf("\nIn dem Text sind %i Leerzeichen enthalten!\n",
countSpaces(Text));
}

更新:这就是我现在站的地方,感谢你们的支持,我现在在这里:

#include <stdio.h>

int mystrlen(const char *str);
void *Trim(char *str, int ch);
int countspaces(const char *str);


int main()
{

char Text[10][50] = {"Dies ist ein langer ",
"Text, der in mehreren ",
"Zeilen untergebracht ",
"ist und der auch noch ",
"in manchen Zeilen mehrere",
"Leerzeichen am Ende ",
"beinhaltet! Die Leer- ",
"zeichen dieses Textes ",
"sollen gezählt werden! ",
" "};
int i = 0;
for (i = 0; i < 10; i++)
{

Trim(Text[i], ' ');
printf("Number of spaces after trim: %d\n", countspaces(Text[i]));
}
}


int mystrlen(const char *str)
{
const char *end = str;

while(*end++);

return end - str - 1;
}


void *Trim(char *str, int ch)
{
char *end = str + mystrlen(str) - 1;

do
{
if(*end == ch)
{
*end = 0;
}
else
{
break;
}
}while(str != end--);
return str;
}

int countspaces(const char *str)
{
int count = 0;

while(*str)
{
count += *str++ == ' ' ? 1 : 0;
}
return count;
}

到目前为止,它有效。

是否也可以计算整个数组的空间?

最佳答案

char *remove_trailing_char(char *str, int ch)
{
char *end = str + strlen(str) - 1;

do
{
if(*end == ch)
{
*end = 0;
}
else
{
break;
}
}while(str != end--);
return str;
}

完整的解决方案

size_t mystrlen(const char *str)
{
const char *end = str;

while(*end++);

return end - str - 1;
}


char *remove_trailing_char(char *str, int ch)
{
char *end = str + mystrlen(str) - 1;

do
{
if(*end == ch)
{
*end = 0;
}
else
{
break;
}
}while(str != end--);
return str;
}

size_t countspaces(const char *str)
{
size_t count = 0;

while(*str)
{
count += *str++ == ' ' ? 1 : 0;
}
return count;
}

int main()
{
size_t nspaces;
char Text[10][50] = {"Dies ist ein langer ",
"Text, der in mehreren ",
"Zeilen untergebracht ",
"ist und der auch noch ",
"in manchen Zeilen mehrere",
"Leerzeichen am Ende ",
"beinhaltet! Die Leer- ",
"zeichen dieses Textes ",
"sollen gezählt werden! ",
" "};
int i = 0;
for (i = 0; i < 10; i++)
{
printf("Number of spaces before trim: %zu\n", countspaces(Text[i]));
remove_trailing_char(Text[i], ' ');
printf("Number of spaces after trim: %zu\n", countspaces(Text[i]));
}
}

自己玩一下 https://onlinegdb.com/H1p13QDXE

关于c - 如何修剪该数组中的空格(右侧)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54345557/

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