私は新しいメンバーです。そして今、私は演習を行っています:「文字列(100、101、102 ...)(文字数は無制限)を入力し、数値を配列に格納する」. 私の先生は私たちに機能を提供します。文字列中の数値を読み取るのがReadWordです。しかし、私にはまだ2つの問題があります。第1に、「for」ループで、「puts」コマンドを配置して配列の要素を出力すると、最後の要素を出力できません。また、「puts」コマンドを「for」ループの外に置くと、要素を出力できません。原因と直し方を教えてください。どうもありがとうございます!
#include <stdio.h>
#include <string.h>
#include<conio.h>
const int MAX_NUM_LEN = 7;
const int MAX_LINE_LEN = 50;
int IsComma(int ch) {
return (ch == ',');
}
int ReadWord(char *num) {
int ch, pos = 0;
ch = getchar();
while (IsComma(ch))
ch = getchar();
while (!IsComma(ch) && (ch != EOF)) {
if (pos < MAX_NUM_LEN) {
num[pos] = (char)ch;
pos++;
}
ch = getchar();
}
num[pos] = '\0';
return pos;
}
int main()
{
int i,j;
int count;
char **ds;
ds=new char *[50];
for (i=0;i<50;i++) ds[i]=new char [3];
char num[MAX_NUM_LEN + 1];
int numLen;
char line[MAX_LINE_LEN + 1];
int lineLen = 0;
i=0;count=0;
for (;;) {
numLen = ReadWord(num);
if (numLen == 0) break;
strcpy(ds[i],num);
puts(ds[i]);
i++;
}
j=i;
printf("\n %d",j);
for(i=0;i<j;i++) printf("%s ",ds[i]);
for(i=0;i<j;i++) delete ds[i];
delete []ds;
getch();
}