回 帖 发 新 帖 刷新版面

主题:如何字符串数组截取

#include "stdafx.h"
#include "stdio.h"
#include "string.h"

int main(int argc, char* argv[])
{
    char a[3][200];
 a[0][200]="adf12345asfasdfasdf";
 a[1][200]="adf12555asfasdfasdfghj";
 a[2][200]="adf15645asfasdfas";
char b[3][200];
int i;
for(i=0;i<3;i++)
{
    strncpy(b[i],a[i]+3,5);
    b[i][5]=0;
printf("%s\n",b[i][200]);//12345 
}
}
我想将字符串数组a中都截取同样位置的字符到字符串数组b中,请指教这代码错在哪?
改如何改正?

回复列表 (共4个回复)

沙发


不会













------------------------------用户言论/签名并不代表本站观点
title="[url=http://www.tiantianseo.com]上海seo[/url]"

板凳

a[0][200]="adf12345asfasdfasdf";
这样的写法是不正确的。a是一个二位数组,a[0][200]其实是一个char,它无法容纳"adf12345asfasdfasdf"这样的数据。
正确的写法是:
strcpy(a[0], "adf12345asfasdfasdf");

printf("%s\n",b[i][200]);
这里也是一样的问题。b[i][200]是一个char,不应该用%s输出。
正确的写法是:
printf("%s\n",b[i]);

3 楼

4 楼

#include <stdio.h>
#include <string.h>

int main(void){
    
    char a[3][200];
    char b[3][200];
    int i;
    
 strcpy(a[0],"adf12345asfasdfasdf");
 strcpy(a[1],"adf12555asfasdfasdfghj");
 strcpy(a[2],"adf15645asfasdfas");

for(i=0;i<3;i++)
{
    strncpy(b[i],a[i]+3,5);
    b[i][5]='\0';
printf("%s\n",b[i]);//12345 
}





return 0;
}

我来回复

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