user-0 提问: c语言的新人 有个程序看不懂   麻烦帮帮忙  谢谢了

回复:
user: user-0
content: 引用 10 楼 user-1 的回复:[quote=引用 9 楼 qq_35555558 的回复:] [quote=引用 7 楼 user-1 的回复:] [quote=引用 6 楼 qq_35555558 的回复:] [quote=引用 5 楼 user-1 的回复:] [quote=引用 3 楼 qq_35555558 的回复:] 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说[/quote]  我的问题就是，为什么越界了之后，他只输出后面多的那几位。。。而且output2中的name2即使越界，为什么能输出完整的呢。。。[/quote]  你去研究越界以后的表现有意义么？ 而且我可以告诉你，表现是不一样的，我测试的结果和不一样   Hi! what's your first name? 123456789012 output 1:123456789012, ?@ output 2:123456789012, 123456789012 output 3:10, 4   这个是我这里的表现[/quote]  。。。。 64位和32位不一样对吧。。。我的指针size是8。。。  那用strcpy（）的时候，name的值给了name2的话    name2就不用考虑之前的10个内存了对吧    该多少就多少   12个数就12个数[/quote]  这些不是重点[/quote]   好吧谢谢了！！！！

user: user-1
content: 引用 9 楼 qq_35555558 的回复:[quote=引用 7 楼 user-1 的回复:] [quote=引用 6 楼 qq_35555558 的回复:] [quote=引用 5 楼 user-1 的回复:] [quote=引用 3 楼 qq_35555558 的回复:] 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说[/quote]  我的问题就是，为什么越界了之后，他只输出后面多的那几位。。。而且output2中的name2即使越界，为什么能输出完整的呢。。。[/quote]  你去研究越界以后的表现有意义么？ 而且我可以告诉你，表现是不一样的，我测试的结果和不一样   Hi! what's your first name? 123456789012 output 1:123456789012, ?@ output 2:123456789012, 123456789012 output 3:10, 4   这个是我这里的表现[/quote]  。。。。 64位和32位不一样对吧。。。我的指针size是8。。。  那用strcpy（）的时候，name的值给了name2的话    name2就不用考虑之前的10个内存了对吧    该多少就多少   12个数就12个数[/quote]  这些不是重点

user: user-0
content: 引用 7 楼 user-1 的回复:[quote=引用 6 楼 qq_35555558 的回复:] [quote=引用 5 楼 user-1 的回复:] [quote=引用 3 楼 qq_35555558 的回复:] 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说[/quote]  我的问题就是，为什么越界了之后，他只输出后面多的那几位。。。而且output2中的name2即使越界，为什么能输出完整的呢。。。[/quote]  你去研究越界以后的表现有意义么？ 而且我可以告诉你，表现是不一样的，我测试的结果和不一样   Hi! what's your first name? 123456789012 output 1:123456789012, ?@ output 2:123456789012, 123456789012 output 3:10, 4   这个是我这里的表现[/quote]  。。。。 64位和32位不一样对吧。。。我的指针size是8。。。  那用strcpy（）的时候，name的值给了name2的话    name2就不用考虑之前的10个内存了对吧    该多少就多少   12个数就12个数

user: user-1
content: 越界以后会如何并没有规定。 一、编程时应该自己防止越界； 二、或者改成这样    scanf("%9s", name);  这个可以自动丢弃多余的输入

user: user-1
content: 引用 6 楼 qq_35555558 的回复:[quote=引用 5 楼 user-1 的回复:] [quote=引用 3 楼 qq_35555558 的回复:] 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说[/quote]  我的问题就是，为什么越界了之后，他只输出后面多的那几位。。。而且output2中的name2即使越界，为什么能输出完整的呢。。。[/quote]  你去研究越界以后的表现有意义么？ 而且我可以告诉你，表现是不一样的，我测试的结果和不一样   Hi! what's your first name? 123456789012 output 1:123456789012, ?@ output 2:123456789012, 123456789012 output 3:10, 4   这个是我这里的表现

user: user-0
content: 引用 5 楼 user-1 的回复:[quote=引用 3 楼 qq_35555558 的回复:] 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说[/quote]  我的问题就是，为什么越界了之后，他只输出后面多的那几位。。。而且output2中的name2即使越界，为什么能输出完整的呢。。。

user: user-1
content: 引用 3 楼 qq_35555558 的回复:那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了  越界了！然后如何处理就说不清楚了  请先处理了越界再说

user: user-0
content: 引用 1 楼 user-1 的回复:    scanf("%s", name);     printf("output 1:%s, %s\n", name, name2); 程序错误太多 第一句：name数组10个元素，输入那么长，越界了！ 第二句：name2没有初始化   但是为什么输入大于10个元素   就只有后面几位呢    比如输入1234567890123    只输出123

user: user-0
content: 那为什么输入一旦大于十位数 output2的name就只输出大于十位数的呢  比如我输进去1234，他就会输出1234.但是我输入123456789012    他就只输出12了

user: user-1
content: 问题二：语法含义不同嘛  sizeof(name)：数组有几个元素   sizeof(name_p)：指针有几个字节

user: user-1
content: scanf("%s", name);     printf("output 1:%s, %s\n", name, name2); 程序错误太多 第一句：name数组10个元素，输入那么长，越界了！ 第二句：name2没有初始化