为什么我把小甲鱼的代码复制粘贴过去报错了。
第一课课后题,写过的代码总数。我抄写一遍之后报错了,不知道错在哪。复制粘贴小甲鱼的代码还是报错,请问是为啥#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 256
long total;
int countLines(const char *filename);
void findAllCodes(const char *path);
void findALLFiles(const char *path);
int countLines(const char *filename)
{
FILE *fp;
int count = 0;
int temp;
if ((fp = fopen(filename, "r")) == NULL)
{
fprintf(stderr, "Can not open the file:%s\n", filename);
return 0;
}
while ((temp = fgetc(fp)) != EOF)
{
if (temp == '\n')
{
count++;
}
}
fclose(fp);
return count;
}
void findAllCodes(const char *path)
{
struct _finddata_t fa;
long handle;
char thePath, target;
strcpy(thePath, path);
if((handle = _findfirst(strcat(thePath, "/*.c"), &fa)) != -1L)
{
do
{
sprintf(target, "%s/%s", path, fa.name);
total += countLines(target);
}while (_findnext(handle, &fa) == 0);
}
_findclose(handle);
}
void findALLDirs(const char *path)
{
struct _finddata_t fa;
long handle;
char thePath;
strcpy(thePath, path);
if((handle = _findfirst(strcat(thePath, "/*"), &fa)) == -1L)
{
fprintf(stderr, "The path %s is wrong!\n",path);
return;
}
do
{
if (!strcmp(fa.name, ".") || !strcmp(fa.name, ".."))
continue;
if( fa.attrib == _A_SUBDIR)
{
sprintf(thePath, "%s/%s", path, fa.name);
findAllCodes(thePath);
findALLDirs(thePath);
}
}while (_findnext(handle, &fa) == 0);
_findclose(handle);
}
int main()
{
char path = ".";
printf("计算中...\n");
findAllCodes(path);
findALLDirs(path);
printf("目前你总共写了 %ld 行代码!\n\n", total);
system("pause");
return 0;
} 看起来你在复制粘贴代码时可能遇到了一些问题。以下是一些可能导致错误的原因和解决方法:
1. **头文件缺失**:你在代码中使用了`#include`,但没有指定具体的头文件。确保你包含了所有需要的头文件,例如:
#include <stdio.h>
#include <string.h>
#include <io.h>
2. **字符数组初始化**:在函数`findAllCodes`和`findALLDirs`中,`thePath`和`target`应该是字符数组而不是单个字符。你需要为它们分配足够的空间,例如:
char thePath, target;
3. **字符串操作**:在`strcpy`和`strcat`函数中,确保目标数组有足够的空间来存储结果。
4. **变量类型**:在`main`函数中,`char path = ".";`应该是一个字符数组:
char path[] = ".";
5. **文件路径分隔符**:在Windows系统中,路径分隔符通常是反斜杠`\\`,而不是正斜杠`/`。确保路径拼接时使用正确的分隔符。
6. **文件属性检查**:在`findALLDirs`函数中,检查文件属性时,`fa.attrib == _A_SUBDIR`可能需要使用位运算符:
if (fa.attrib & _A_SUBDIR)
请根据以上建议修改你的代码,看看是否能解决问题。如果还有其他错误信息,请提供具体的错误信息以便进一步帮助。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 是我编译器的原因吗?哪里出错了 0.3 发表于 2024-12-05 23:21
是我编译器的原因吗?哪里出错了
看起来你的代码中有一些问题可能导致编译错误。以下是一些常见问题和解决方法:
1. **头文件缺失**:确保你包含了所有需要的头文件。根据你的代码,可能需要以下头文件:
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <stdlib.h>
2. **字符数组初始化**:在函数`findAllCodes`和`findALLDirs`中,`thePath`和`target`应该是字符数组而不是单个字符。你需要为它们分配足够的空间,例如:
char thePath, target;
3. **字符串操作**:在`strcpy`和`strcat`函数中,确保目标数组有足够的空间来存储结果。
4. **变量类型**:在`main`函数中,`char path = ".";`应该是一个字符数组:
char path[] = ".";
5. **文件路径分隔符**:在Windows系统中,路径分隔符通常是反斜杠`\\`,而不是正斜杠`/`。确保路径拼接时使用正确的分隔符。
6. **文件属性检查**:在`findALLDirs`函数中,检查文件属性时,`fa.attrib == _A_SUBDIR`可能需要使用位运算符:
if (fa.attrib & _A_SUBDIR)
请根据以上建议修改你的代码,看看是否能解决问题。如果还有其他错误信息,请提供具体的错误信息以便进一步帮助。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 你在 VS,肯定出错啦! 小甲鱼的二师兄 发表于 2024-12-6 04:27
你在 VS,肯定出错啦!
人家是 Linux,是 CentOS,你用 Windows,肯定不行啦~ 这是VScode.得用Linux zyx2012 发表于 2024-12-6 06:02
这是VScode.得用Linux
有两段 一段Linux一段windows的,我复制的就是windows那段代码,我用的VS 小甲鱼的二师兄 发表于 2024-12-6 04:28
人家是 Linux,是 CentOS,你用 Windows,肯定不行啦~
有两段 一段Linux一段windows的,我复制的就是windows那段代码{:5_99:},请问我得用虚拟机换Linux吗 事实这段windows代码就是有问题,包括我在内的很多人报错
页:
[1]