我是新成員。現在,我正在練習:「輸入一串字符(100,101,102 ...)(字符數不限),並將數字存儲在數組中」。我的老師提供給我們一個功能。它是ReadWord讀取字符串中的數字。但我仍然有2個問題。第一,在「for」循環中,當我把「puts」命令打印出數組的元素時,我無法打印最後一個元素。如果我把「puts」命令放在「for」循環之外,我不能打印任何元素。請告訴我爲什麼以及如何修復它。非常感謝你!如何輸入字符串(100,101,102 .....)(字符數量無限制)並將數字存儲在數組中C
#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();
}
C?真? 'ds = new char * [50];'?另外,你最好通過'indent'來管理你的代碼,以免嘔吐。 – 2013-03-16 16:29:44
將其重新標記爲C++。這不是C語法 – 2013-03-16 16:32:36
請說出你輸入的內容,以及你看到的輸出內容。 '無法打印最後一個元素'不是很有幫助。你有一些錯誤,但最明顯的是'new char [3]'不夠大。 – john 2013-03-16 16:38:44