[英]How to scan an integer 'n' and then declare an array[1000][n] in c?
當我嘗試掃描整數n
並聲明一個數組時,我無法獲取正確的輸出,而在調試它並打印該數組的元素時,我得到一個錯誤:無法對不完整的類型執行指針數學運算,請嘗試將其轉換為已知的類型,或void *
。
#include <stdio.h>
int main()
{
int n,i=0,j=0,k=0;
scanf("%d",&n);
char string[10000];
scanf("%s",string);
char a[1000][n];
while(isalnum(string[i])!=0)
{
for(j=0;j<n;j++)
{
a[k][j]=string[i];
i++;
}
k++;
}
i=0;
for(j=0;j<n;j++)
{
while(isalnum(a[i][j])!=0)
{
printf("%c",a[i][j]);
i++;
}
}
printf("\n");
return 0;
}
while(isalnum(string[i])!=0)
{
for(j=0;j<n;j++)
{
a[k][j]=string[i];
i++;
}
k++;
}
在此循環中有一個錯誤, while
條件正在檢查isalnum(string[i] != 0)
,而while循環內部有一個for循環,其中i正在遞增。 僅僅因為您沒有得到正確的輸出,您似乎就認為創建數組引起了問題。 但是數組創建很好。 實現您試圖做的事情是錯誤的,這是您的邏輯。
如果只想打印字母數字字符而忽略其余字符,則可以如下所示:
#include <stdio.h>
int main()
{
int i=0,k=0;
char s[10000];
char a[10000];
scanf("%s",s);
while(s[i] != '\0')
{
if(!isalnum(s[i]))
{
i++;
continue;
}
else
a[k++] = s[i];
i++;
}
a[k] = '\0';
printf("%s\n",a);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.