为啥找不到路径?求分析

img


刚学的C语言,按照课程抄的却跑不起来,希望得到指点,谢谢你们

有帮助的话 采纳一下

#include <stdio.h>

int main() {
  printf("王国强");
  
  return 0;
}

请问是哪里出问题了?有编译器报错的记录吗?

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7519691
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言结构体的定义和用法,定义结构体,定义结构体变量,结构体变量赋初值,输出结构体变量的值
  • 除此之外, 这篇博客: C语言实现可写入文件的账号密码登录系统,密码输入时掩盖,登录界面菜单选择,更改密码系统,课设必备。中的 3.注册系统 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void Register()
    {
    	Users a, b;//创建用户结构体临时变量,a是用来接收用户输入的,b是用来从文件中读取的,来和a作比较
    
    	char tmp[20]="";//用着下面判断的
    
    	printf("欢迎来到注册界面!\n");
    	FILE* pf = fopen("users.dat", "rb");//"rb"是以二进制只读方式打开文件的意思
    	fread(&b, sizeof(Users), 1, pf);//将数据读入b中
    	if (!pf)//如果打开失败
    	{
    		printf("%s", strerror(errno));//errno可以理解是报的错误对应的编号,strerror可以把这个编号翻译出来,输出在屏幕上
    		return;
    	}
    	Sleep(800);
    
    	printf("请输入您的账号>>");
    	scanf("%s", a.id);
    	while (1)
    	{
    		if (strcmp(a.id, b.id))//两个用户名不相等
    		{
    			if (!feof(pf))//没读到文件末尾
    			{
    				fread(&b, sizeof(Users), 1, pf);//继续读取文件中的用户到b中
    			}
    			else//读到文件末尾了,确认没有重复的id
    			{
    				break;
    			}
    		}
    		else//有两个用户名相等
    		{
    			printf("此用户名已存在在,请重新输入!\n");
    			Sleep(1000);
    			fclose(pf);//关闭文件
    			pf = NULL;//pf置空,避免野指针
    			return;
    		}
    	}
    	printf("请输入您的姓名>>");
    	scanf("%s", a.name);
    	printf("请输入您的性别>>");
    	scanf("%s", a.sex);
    	printf("请输入您的电话号码>>");
    	scanf("%s", a.phone);
    	printf("请输入您的密码>>");
    	Getpwd(a.pwd);//输入密码的函数,有掩盖功能,下面会介绍
    	printf("\n请再次确认您的密码>>");
    	Getpwd(tmp);
    	do
    	{
    		if (!strcmp(a.pwd, tmp))//两次密码相等
    		{
    			pf = fopen("users.dat", "ab");
    			fwrite(&a, sizeof(Users), 1, pf);
    			printf("\n账号注册成功,请登录!\n");
    			Sleep(500);
    			fclose(pf);
    			pf = NULL;
    			return;
    		}
    		else
    		{
    			printf("\n两次密码不匹配!请重新输入>>");
    			Getpwd(a.pwd);
    			printf("\n请再次确认>>");
    			Getpwd(tmp);
    		}
    	} while (1);
    }

     文件都是以二进制打开以二进制写入的,没别的原因,就是觉得帅!

  • 您还可以看一下 CSDN讲师老师的C语言精髓之编译过程视频教程课程中的 计算机的组成部分,栈内存的特点;画出内存图,引入指针的概念小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 根据参考资料中给出的代码段,按照课程学习的C语言代码无法运行的原因可能有以下几点: 1. 缺少相应的头文件:根据段落0中的代码,发现使用了自定义的内存统计函数,但代码中没有包含对应的头文件,可能会导致编译错误。 2. 缺少自定义函数的定义:代码中使用了自定义的内存统计函数(m_perform_free,m_perform_calloc,m_perform_malloc),但是没有给出具体的函数定义,可能会导致链接错误。 3. 程序逻辑错误:代码中的数组分组和异或操作存在逻辑错误,可能导致程序运行结果不正确。 4. 编译环境问题:可能会因为编译器的版本或设置问题导致代码无法成功编译或运行。

    解决方案: 1. 添加头文件引用:根据参考资料中的代码,添加对应的头文件引用,以便使用自定义的内存统计函数。将以下代码添加到程序文件的开头或适当位置。

    #include "memory_count.h"
    
    1. 实现自定义函数:根据参考资料中的代码,实现自定义的内存统计函数(m_perform_free,m_perform_calloc,m_perform_malloc)。具体的函数实现需要根据实际需求进行编写。

    2. 修正代码逻辑错误:根据参考资料中的代码,修正数组分组和异或操作的逻辑错误。以下是修正后的代码:

    #include <stdio.h>
    
    int main()
    {
        int arr[10] = { 1,1,2,2,3,3,4,4,5,6 };
        int sz = sizeof(arr) / sizeof(arr[0]);
    
        int i = 0;
        int sum = 0;
        for (i = 0; i < sz; i++)
        {
            sum ^= arr[i];
        }
    
        i = 0;
        while (((sum >> i) & 1) != 1)
        {
            i++;
        }
    
        int arr1[10] = { 0 }, a1 = 0;
        int arr2[10] = { 0 }, a2 = 0;
        int a = 0;
        for (a = 0; a < sz; a++)
        {
            if ((arr[a] >> i) & 1)
            {
                arr1[a1] = arr[a];
                a1++;
            }
            else
            {
                arr2[a2] = arr[a];
                a2++;
            }
        }
    
        int x = 0;
        for (i = 0; i < a1; i++)
        {
            x ^= arr1[i];
        }
        printf("%d\n", x);
    
        x = 0;
        for (i = 0; i < a2; i++)
        {
            x ^= arr2[i];
        }
        printf("%d\n", x);
    
        return 0;
    }
    
    1. 检查编译设置:检查编译器的版本和设置是否与代码要求的环境相匹配,确保能够正确编译和运行代码。

    注意:以上是根据问题中提供的代码段和信息进行的分析和解决方案,具体解决方法可能因实际情况而异。如果问题仍然存在,建议提供更多相关的信息和错误提示,以便得到更准确的帮助。