如何在一個循環中讀取多個字符串,每個字符串的長度都不是先前已知的?我嘗試了以下,但它不按需要工作。讀取長度未知的字符串
int main()
{
int j, i = 0;
char c;
char *buf = malloc(20);
size = 20;
for(j = 0; j < 10; j++)
{
i = 0;
while(1)
{
if(i == size)
{
buf = realloc(buf,size+10);
size += 10;
}
char c = getchar();
if(c == '\n')
break;
buf[i] = c;
i++;
}
buf[i] = '\0';
printf("%s\n", buf);
}
}
它只有在我將這些字符串作爲輸入時纔有效。但是假設我有一個scanf(「%d」,& j),在我輸入字符串輸入之前,然後按這個scanf的輸入將使我的第一個字符串爲空
那如何不工作?它一次只讀取一個字符,不管它是否是數字字符都無關緊要。 –
@ugoren是的,我做的。仔細閱讀代碼 – ishan3243
@JoachimPileborg 它只適用於我將這些字符串作爲輸入。但是,假設我有一個scanf(「%d」,&j)之前,我採取字符串輸入,然後按這個scanf輸入將使我的第一個字符串爲空。 – ishan3243