首页 > 代码库 > 关于argv和strncpy()的困惑
关于argv和strncpy()的困惑
遇到一个问题,命令行参数复制到字符串后打印出来的结果与直接打印命令行参数的结果不一致。
不清楚是哪里的问题。
#include <stdio.h>#include <string.h>#define LEN 5int main(int argc, char* argv[]){ char s1[LEN]; char s2[LEN]; for(int i = 0; i<LEN; i++) { s1[i] = ‘\0‘; s2[i] = ‘\0‘; } printf("%s\n%s\n", s1, s2); // 直接打印命令行参数 for(int i = 1; i < argc; i++) printf("%s\n", argv[i]); // 将命令行参数复制到字符串再打印 strncpy(s1, argv[1], LEN); strncpy(s2, argv[2], LEN); printf("%s\n%s\n", s1, s2); return 0;}
运行:
test.exe tmp temp
结果是对的:
tmp
temp
tmp
temp
但是,运行:
test.exe tmp tempmoreword
结果:
tmp
tempmoreword
tmp
tempmtmp
即,命令行参数超出strncpy()指定的字符串长度时会出错。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。