yiwan 发表于 2016-5-11 12:30:11

将字符分段存储在数组中!

本帖最后由 yiwan 于 2016-5-12 09:58 编辑


#include <stdio.h>
#include <stdlib.h>


int main()

{
   
    char a={0};         //定义10行,每行进行存储字符20个;
    int i;
    for(i=0;i<10;i++)
    {
      gets(*(a+i));        //接收字符到每行;
                                //*(*(a+i)+20)=='\0';        分成10段,每段结束加‘\0’
    }
           printf("%s",*(a+1));//打印需要的那一行? 或者赋值;
   
}

上山砍柴去 发表于 2016-5-11 22:59:51

感谢楼主的分享,受益匪浅。

n0noper 发表于 2016-5-12 09:07:06

卤煮,不好意思哈,不知道你什么编译器居然可以过···
但是,你的注释的那一句貌似不是很准确,以下是参考:

(*(*(a+i)+20)) = '\0';
(*(a+i)) = '\0';

有什么不对的地方,指出来大家再讨论。

yiwan 发表于 2016-5-12 10:04:05

忽然发现,在gets()后编译器会自动在语句后面加多‘\0’,不用人为的添加;
我们要用到的时候只需要,索引到每一行的首地址。
在一行末尾‘\0’会欺骗编译器结束;

n0noper 发表于 2016-5-12 10:19:55

yiwan 发表于 2016-5-12 10:04
忽然发现,在gets()后编译器会自动在语句后面加多‘\0’,不用人为的添加;
我们要用到的时候只需要,索引 ...

MSDN:
gets then replaces the newline character with a null character ('\0') before returning the line.

另外,你说的这个“欺骗”不是很理解? 官方自己定义的 printf的%s就是取以空结尾的字符串,怎么能说欺骗呢?读书人怎么说是骗呢?{:10_256:}
页: [1]
查看完整版本: 将字符分段存储在数组中!