回 帖 发 新 帖 刷新版面

主题:菜鸟求救,高手们帮我看看这个程序哪里出错了。。。

[code=c]
// 机房IP设置工具.cpp

#include "StdAfx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "malloc.h"

int main(int argc, char* argv[])
{
    int i;
    char n[4];
    char *ipset;
    char *ipset2=" 255.255.255.0 192.168.1.1 0 >nul";
    ipset=(char *)malloc(256*sizeof(char));
    if(!ipset) {printf("OVERFLOW\n"); exit(-2);}
    ipset="netsh interface ip set address 本地连接 static 192.168.1.";
    printf("\n说明:机房IP将统一设置为 机器号+100 ,最小值为1\n");
    printf("请输入机器号: ");
    scanf("%d",&i);
    itoa(i+100,n,10);
    strcat(ipset,n);
    strcat(ipset,ipset2);
    system(ipset);
    free(ipset);
    system("pause");
    return 0;
}

[/code]

程序要实现的功能是输入一个机器号之后,自动填写
[code=c]
netsh interface ip set address 本地连接 static 192.168.1.X 255.255.255.0 192.168.1.1 0 >nul
[/code]
当中的X,然后执行设定IP的功能,可是这个程序编译时没有错误,执行到strcat函数的时候,程序就崩溃了,不知为何,求教高手。。。

回复列表 (共7个回复)

沙发

//char *ipset;
//ipset=(char *)malloc(256*sizeof(char));
//ipset="netsh interface ip set address 本地连接 static 192.168.1.";
char ipset[256]="netsh interface ip set address 本地连接 static 192.168.1.";

板凳


楼上老师的方法我试过了,,可以解决ipset和n连接的问题,可是还是报错,不知为何。。。

3 楼

我知道了。。。程序没问题了,是机器上运行的问题。。。谢谢

4 楼

但是为什么不能使用指针直接定义字符串呢?

5 楼

ipset=(char *)malloc(256*sizeof(char));
ipset="netsh interface ip set address 本地连接 static 192.168.1.";
这两句有矛盾
1.  申请了内存,把内存的地址赋给了ipset指针
2.  把内存中字符串的地地址赋给了ipset指针
所以内存白申请了

要不就改成strcpy(ipset,"netsh interface ip set address 本地连接 static 192.168.1.");

6 楼

学习了!

7 楼

终于明白了。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册