我有一项家庭作业,要求我删除句子中的所有随机单词。例如,当我键入:"Hello asjdasjdas my asdjasidj name kasdjas is asjdoaisd Felix sadads"
时,输出将删除随机单词,它将为"Hello my name is Felix"
。我尝试使用if检测字符串,但是我不知道如何将其转换为2d数组,以便删除字符串。
int testcase;
char kalimat[100];
scanf("%d",&testcase);
for(int i = 0; i < testcase; i++){
scanf("%d",&length);
scanf("%[^\n]",kalimat);
for(int j = 0; j < length;j++){
if(kalimat[j-1] == ' ' || kalimat[j+1] == ' ' ){
// How to remove the string?
}
}
}
答案 0 :(得分:0)
如果要将其转换为2d数组,可以这样操作:
#include <stdio.h>
int main(void) {
char sentence[]="Hello World";
char arr[2][20];
int i,j,word;
for(i=0,j=0,word=0;sentence[i]!='\0';i++){
if(sentence[i]!=' ') {
arr[word][j]=sentence[i];
j++;
}
else{
arr[word][j]='\0';
word++; j=0;
}
}
arr[word][j]='\0';
printf("%s\n%s",arr[0],arr[1]);
return 0;
}
答案 1 :(得分:0)
使用strtok
可以标记字符串(字符数组)。请注意:字符串已更改,请使用副本!
您可以尝试这样的事情:
char string[] = "Hasta-la-vista-baby";
char delimiter[] = "-";
char *ptr = NULL;
bool bRandomWord = false;
//first token
ptr = strtok(string, delimiter);
while(ptr != NULL)
{
printf("Found: %s\n", ptr);
bRandomWord = Check(ptr); // you'll have to implement this
if (!bRandomWord)
{
// you can copy ptr here to a char[][] using strcpy(_n)
}
// next tokens
ptr = strtok(NULL, delimiter);
}