strcpy(&url[i], '\0')或url[len – i] = '\0'有错

C语言 码拜 4年前 (2016-09-15) 351次浏览
以下两个函数都是用来去掉 “/” 之后的文件名
例如输入”http://www.knking.com/index.html”,输出”http://www.knking.com”
但是程序无法运行,通过在函数的某些语句后面随意输出一些东西检验,发现题目写的中的那两个语句无法运行,讨教怎么样解决?

#include <stdio.h>
#include <string.h>
void remove_filename(char *url)
{
    int i = 7;    //字符"http://"共7个字符,避免遇到这里的"/"
    while(url[i] != "/")
        i++;
    strcpy(&url[i], "\0");      //问题语句
    puts(url);
}
void remove_filename_2(char *url)
{
    int i, len = strlen(url);
    for (i = 0; i <= len; i++)
        if (url[len - i] == "/") {
            url[len - i] = "\0";    //问题语句
            break;
        }
    puts(url);
}
int main(void)
{
    remove_filename("http://www.knking.com/index.com");
    printf("\n");
    remove_filename_2("http://www.knking.com/index.com");
    return 0;
}

谢谢!

解决方案

80

你的字符串是在常量区的,不能修改
假如要修改,应用字符数组存字符串
char str[] = “xxxx……”

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明strcpy(&url[i], '\0')或url[len – i] = '\0'有错
喜欢 (0)
[1034331897@qq.com]
分享 (0)