将每个单词存储在二维字符串 C 中
storing each word in a 2d string C
我想将每个单词存储在一个二维字符串中。我写的代码没有错误,唯一的问题是当有两个 space 或更多时,它将 space 存储为一个词。如果有人知道我该如何解决这个问题
这是我的代码:
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main()
{
char words[100][1000];
int i=0, k, j=0, m=0;
int state = OUT;
int nw = 0;
while((k = getchar()) != EOF)
{
if((isspace(k)!= 0)|| (ispunct(k)!= 0))
{
state = OUT;
words[i][j] = '[=10=]';
i++;
j = 0;
}
else
{
words[i][j++]= k;
if(state == OUT)
{
state = IN;
nw++;
}
}
}
return 0;
}
在考虑最后一个字符输入新词之前,您需要跳过所有白色space。您还可以简化 space 和标点符号的检查。
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main()
{
char words[100][1000];
int i=0, k, j=0, m=0;
int state = OUT;
int nw = 0;
int last_char = ' ';
while((k = getchar()) != EOF)
{
if((isspace(k)|| ispunct(k)) && !isspace(last_char))
{
state = OUT;
words[i][j] = '[=10=]';
i++;
j = 0;
}
else if (!isspace(k))
{
words[i][j++]= k;
if(state == OUT)
{
state = IN;
nw++;
}
}
last_char = k;
}
return 0;
}
我想将每个单词存储在一个二维字符串中。我写的代码没有错误,唯一的问题是当有两个 space 或更多时,它将 space 存储为一个词。如果有人知道我该如何解决这个问题
这是我的代码:
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main()
{
char words[100][1000];
int i=0, k, j=0, m=0;
int state = OUT;
int nw = 0;
while((k = getchar()) != EOF)
{
if((isspace(k)!= 0)|| (ispunct(k)!= 0))
{
state = OUT;
words[i][j] = '[=10=]';
i++;
j = 0;
}
else
{
words[i][j++]= k;
if(state == OUT)
{
state = IN;
nw++;
}
}
}
return 0;
}
在考虑最后一个字符输入新词之前,您需要跳过所有白色space。您还可以简化 space 和标点符号的检查。
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
int main()
{
char words[100][1000];
int i=0, k, j=0, m=0;
int state = OUT;
int nw = 0;
int last_char = ' ';
while((k = getchar()) != EOF)
{
if((isspace(k)|| ispunct(k)) && !isspace(last_char))
{
state = OUT;
words[i][j] = '[=10=]';
i++;
j = 0;
}
else if (!isspace(k))
{
words[i][j++]= k;
if(state == OUT)
{
state = IN;
nw++;
}
}
last_char = k;
}
return 0;
}