c语言问题,段错误.warning: assignment makes pointer from integer without a cast。帮修改错误。 C语言assignment makes pointer fr...

c\u8bed\u8a00\u95ee\u9898,\u6bb5\u9519\u8bef.warning: assignment makes pointer from integer without a cast

\u628a\u4f60\u7684\u4ee3\u7801\u8d34\u51fa\u6765\u5427\uff0c\u4f60\u7ed9\u4e0d\u662f\u540c\u7c7b\u578b\u7684\u53d8\u91cf\u8d4b\u503c\u4e86\u5e76\u4e14\u6ca1\u6709\u8fdb\u884c\u5f3a\u5236\u8f6c\u6362

warning\u7684\u610f\u601d\u5e94\u8be5\u662f\u5c06\u4e00\u4e2aint\u6574\u6570\u503c\u76f4\u63a5\u8d4b\u503c\u7ed9\u4e86\u4e00\u4e2a\u6307\u9488\u53d8\u91cf\u5427\uff0c\u4f60\u8fd8\u662f\u68c0\u67e5\u4e0b\u662f\u54ea\u4e00\u884c\uff0c\u6d88\u9664\u8fd9\u4e9bwarning\u3002\u6d88\u9664\u7684\u65b9\u6cd5\u5c31\u662f\u660e\u786e\u7c7b\u578b\u8f6c\u6362\u662f\u5426\u662f\u6b63\u786e\u7684\uff0c\u5982\u679c\u786e\u5b9e\u8981\u628a\u6574\u6570\u53d8\u91cf\u8d4b\u4e88\u6307\u9488\u53d8\u91cf\uff0c\u90a3\u4e48\u8bf7\u4f7f\u7528\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362\u3002\u5426\u5219\uff0c\u8bf7\u7528\u76f8\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u8fd9\u6837\u7f16\u8bd1\u5668\u5c31\u4e0d\u4f1a\u663e\u793a\u8b66\u544a\u3002

不用数组的话,长度不够,段错误是这个原因。另外,倒数第三行,可以改为a[i]='\0'吧,警告就是这个原因,英文的翻译就是“赋值时将指针赋给整数,未作类型转换”。

c[i] = c[i + lenb];改变了指针的地址,之前你初始化的时候C里面存了是strstr(a,b)返回的地址!记住指针只是用来储存地址,他没有存储字符的空间。而数组又不同。

#include <stdio.h>
#include <string.h>
void main(int argc, char *argv[])
{
char a[] = "wo shi afuhan ren, wo ai AK47!!!";
char b[] = "afuhan";
char *c;
printf("old string is:%s\n\n",a);
int lena,lenb,lenc,i;
c =strstr(a,b);
printf(" string c is:%s\n\n",c);
lena = strlen(a);
lenb = strlen(b);
lenc = strlen(c);
for(i = 0; i < lenc - lenb; i++)
c[i] = c[i + lenb];
for(i =(lena - lenc - 1); i < lena; i++)
a[i] = NULL;
strcat(a,c);
printf("new string is:%s\n\n",a);
}

常量修改

扩展阅读:扫一扫题目出答案 ... c#读取excel表格 ... c语言warning警告对照表 ... c语言考试调试不了 ... c语言常见错误及原因 ... c#如何解除套接字占用 ... c++实现sin ... c语言答案错误的原因 ... c语言段错误核心已转储 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网