C 通过字符数组的大小得出错误的结果

C 通过字符数组的大小得出错误的结果,c,sizeof,C,Sizeof,我得到的结果是-858993460,它的大小应该是10。 用C语言进行Im编码: fscanf(pFile, "%20s", input); i_sizeOfInput = (sizeof(input) / sizeof(char)); i_sizeOfInput是-858993460 有什么想法吗?要获得字符串的长度,必须使用 sizeof运算符返回其操作数的大小(以字节为单位) 编辑 在阅读最近的评论时,我必须补充一点,即以这种方式声明您的输入变量char input[]={''};您正

我得到的结果是-858993460,它的大小应该是10。 用C语言进行Im编码:

fscanf(pFile, "%20s", input);

i_sizeOfInput = (sizeof(input) / sizeof(char));
i_sizeOfInput是-858993460


有什么想法吗?

要获得字符串的长度,必须使用

sizeof运算符返回其操作数的大小(以字节为单位)

编辑

在阅读最近的评论时,我必须补充一点,即以这种方式声明您的输入变量char input[]={''};您正在调用

正如您所看到的,您正在声明一个空间为1个字符的数组,并且fscanf ca返回大量字节,这些字节将超出输入变量的边界


您必须将输入定义为可以从文件中读取的字符串的最大维度,例如char input[128]={'\0'}

你能不能展示i_sizeOfInput的声明,这样我们就可以确切地知道它是什么类型的?输入是如何声明的?不管怎么说,strlen是一种计算字符串长度的方法。那么,如何实际获得i_sizeOfInput的值呢?通过printf,通过调试器输出?输入是一个CSV文件,第一行是Frank:5342int i_sizeOfInput=0;字符输入[]={'}@Y.N然后结束回答的问题。
In your case i_sizeOfInput = strlen(input);