DAY 18 2022-09-17 11:26 采纳率: 66.7%
浏览 22
已结题

c指导书中示例代码观看后的一些问题

问题遇到的现象和发生背景

在一本c语言指导书里发现一个使用指针数组读取输入字符串并进行排序的程序代码,发现有点没看懂,麻烦各位帮我看看41行出的gets(buffer)!=0是什么意思,这不是相当于指针为零吗?还有45行return -1是什么意思,这个值返回到哪里,是EOF的作用吗?

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
#define max 25
int get_lines(char *lines[]);
void sort(char *p[],int n);
void print_strings(char *p[],int n); 
char *lines[max]; 
int main()
{
    int num_of_lines; 
    num_of_lines=get_lines(lines);
    if(num_of_lines<0)
    {
        puts("memory allocation error.");
        exit(-1);
    }
    sort(lines,num_of_lines);
    print_strings(lines,num_of_lines);
    return 0;
}
int get_lines(char *lines[])
{
    int n=0;
    char buffer[80];
    puts("enter one line at time,enter a blank when done.");
    while((n<max)&&(gets(buffer)!='\0')&&(buffer[0]!='\0'))
    {
        if((lines[n]=(char*)malloc(strlen(buffer)+1))==NULL)
        {
            return -1;
        }
        strcpy(lines[n++],buffer); 
    }
    return n;
}
void sort(char *p[],int n)
{
    int a,b;
    char *tmp;
    for(a=1;a<n;a++)
    {
        for(b=0;b<n-1;b++)
        {
            if(strcmp(p[b],p[b+1])>0)
            {
                tmp=p[b];
                p[b]=p[b+1];
                p[b+1]=tmp;
            }
        }
    }
}
void print_strings(char *p[],int n)
{
    int count;
    for(count=0;count<n;count++)
    {
        printf("%s\n",p[count]);
    }
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-17 11:35
    关注

    gets(buffer)!=0
    写成 gets(buffer)!=NULL可能更容易理解,就是没有正确获得输入数据的意思。
    return -1只是函数返回值,告诉调用函数的代码,这个函数没有获得输入字符串。在main函数中对此进行了判断,如果返回值<0就输出错误信息了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值