将字符分段存储在数组中!
本帖最后由 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));//打印需要的那一行? 或者赋值;
} 感谢楼主的分享,受益匪浅。 卤煮,不好意思哈,不知道你什么编译器居然可以过···
但是,你的注释的那一句貌似不是很准确,以下是参考:
(*(*(a+i)+20)) = '\0';
(*(a+i)) = '\0';
有什么不对的地方,指出来大家再讨论。 忽然发现,在gets()后编译器会自动在语句后面加多‘\0’,不用人为的添加;
我们要用到的时候只需要,索引到每一行的首地址。
在一行末尾‘\0’会欺骗编译器结束; 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]