我的程序不起作用。 我的问题是如何正确定义我的函数原型? 此外,函数调用中是否有任何错误? 请帮我!
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void copystring(char m[][],char temp[]);
int main()
{
char temp[10000];
char m[10000][10000];
gets(temp);
copystring(m,temp);
printf("%s\n",m[0]);
printf("%s\n",m[1]);
return 0;
}
void copystring(char m[][],char temp[])
{
int i=0;
int j=0;
int k;
for (k=0;k<(strlen(temp));k++)
{
if (temp[k]!=',')
{
m[j][i++]=temp[k];
}
else
{
m[j][i]='\0';
j++;
i=0;
}
}
}
答案 0 :(得分:2)
最快的“修复”就是这样做:
void copystring(char m[][10000],char temp[]);
但要注意你的100MB阵列!!
答案 1 :(得分:1)
假设C99或更高版本将copystring()
的签名更改为:
void copystring(size_t n, char m[n][n],char temp[n]);
并称之为:
copystring(10000, m, temp);
不要使用
gets(temp)
但请使用
fgets(temp, 10000, stdin);
后者负责不会溢出temp
。