你好,我在用C解决编程任务时遇到了问题。
功能“ Trim”应替换字符串末尾的所有空格 与null。作为参数,它获取一个字符串,但需要返回 任何东西。
第二个功能“ countSpaces”应计算数组中的所有空间。 作为参数,它得到一个2维数组,它应该返回 数组中的空格数。
允许其他标题。
德语原文:
Der erste Funktion饰物使Alle Leerzeichen am Ende einer Zeichen- 凯特·洛申(d.h. mit dem ASCII-Wert 0überschreiben)。 Als参数 死于Zeichenketteübergeben。 Die Funktion gibt nichtszurück。
死亡 zweite Funktion countSpaces在einem Array von中使所有Leerzeichen 10 Zeichenketten mit je最多50 Zeichenzählen。 Als参数设置 es ein zweiDimensiones Array von Zeichen。 Das Funktions-ergebnis 和艾伦·塞恩肯蒂特·德·埃弗森·冯·蔡琴凯滕的电影《安扎尔·德尔·莱尔泽伊辛》一样。
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;
}
到目前为止有效。
是否还可以计算整个阵列的空间?
答案 0 :(得分:1)
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]));
}
}