C 如何删除句子中的字符串?
我有一个家庭作业,要求我删除句子中的每一个随机单词。例如,当我键入:C 如何删除句子中的字符串?,c,arrays,C,Arrays,我有一个家庭作业,要求我删除句子中的每一个随机单词。例如,当我键入:“Hello asjdasjdas my asdjasidj name kasdjas is asjdoaisd Felix sadads”时,输出将删除随机单词,它将是“Hello my name is Felix”。我尝试使用if检测字符串,但我不知道如何将其转换为数组到二维,以便删除字符串 int testcase; char kalimat[100]; scanf("%d",&testca
“Hello asjdasjdas my asdjasidj name kasdjas is asjdoaisd Felix sadads”
时,输出将删除随机单词,它将是“Hello my name is Felix”
。我尝试使用if检测字符串,但我不知道如何将其转换为数组到二维,以便删除字符串
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?
}
}
}
int测试用例;
char kalimat[100];
scanf(“%d”和testcase);
for(int i=0;i
如果要将其转换为二维阵列,可以按如下方式进行:
#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;
}
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);
}
#包括
内部主(空){
字符句子[]=“你好,世界”;
char-arr[2][20];
int i,j,单词;
for(i=0,j=0,word=0;句子[i]!='\0';i++){
如果(句子[i]!=''){
arr[word][j]=句子[i];
j++;
}
否则{
arr[word][j]='\0';
word++;j=0;
}
}
arr[word][j]='\0';
printf(“%s\n%s”,arr[0],arr[1]);
返回0;
}
使用strtok
可以标记字符串(字符数组)。请注意:字符串已更改,请使用副本!
您可以尝试以下方法:
#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;
}
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);
}
当
j
为0时-什么是kalimat[j-1]
值?您可以尝试左移子字符串:for(i=''直到下一个“”)kalimat[i]=kalimat[i+要删除的单词的长度]。当你到达句子末尾时,用零填充剩余的将删除随机词
——看起来你每秒钟都删除一个词,而不是随机词。“Hello asjdas”
也是有效的输出吗?