相关疑难解决方法(0)

从fgets()输入中删除尾随换行符

我试图从用户那里获取一些数据并将其发送到gcc中的另一个函数.代码是这样的.

printf("Enter your Name: ");
if (!(fgets(Name, sizeof Name, stdin) != NULL)) {
    fprintf(stderr, "Error reading Name.\n");
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现它最后有一个换行符\n.所以,如果我输入John它最终发送John\n.如何删除它\n并发送正确的字符串.

c string gcc newline fgets

210
推荐指数
5
解决办法
30万
查看次数

在C中逐行浏览文本文件

我一直在为我的CIS类做一个小练习,并且我对C用于从文件中读取的方法感到困惑.我真正需要做的就是逐行读取文件并使用从每行收集的信息进行一些操作.我尝试使用getline方法和其他没有运气的方法.我的代码目前如下:

int main(char *argc, char* argv[]){
      const char *filename = argv[0];
      FILE *file = fopen(filename, "r");
      char *line = NULL;

      while(!feof(file)){
        sscanf(line, filename, "%s");
        printf("%s\n", line);
      }
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

现在我用sscanf方法得到一个seg错误,我不知道为什么.我是一名C总裁,只是想知道是否有一些我失踪的大事.谢谢

c scanf getline

54
推荐指数
4
解决办法
28万
查看次数

释放空指针

如果我们尝试释放指向NULL的指针,内存会发生什么?这有效吗?

为什么它不显示任何警告/错误消息?

c pointers

36
推荐指数
5
解决办法
1万
查看次数

如何在c中打开或不打开文件

我正在尝试使用c程序在txt文件上输出一些字符串

但是,我需要查看我是否有权在txt文件上写入,如果没有,我需要打印出错误信息?但是,我不知道如何检测我是否成功打开文件,有人可以帮我解决这个问题吗?谢谢

代码是这样的

File *file = fopen("text.txt", "a");

fprintf(file, "Successfully wrote to the file.");

//TO DO (Which I don't know how to do this)
//If dont have write permission to text.txt, i.e. open was failed
//print an error message and the numeric error number
Run Code Online (Sandbox Code Playgroud)

感谢任何人的帮助,非常感谢

c

5
推荐指数
2
解决办法
3万
查看次数

如何从C中的文件中读取一行

我想逐行读取文件中的行,但它对我不起作用.

这是我试图做的:

FILE *file;
char *line = NULL;
int len = 0;
char read;
file=fopen(argv[1], "r");

if (file == NULL)
    return 1;

while ((read = getline(&line, len, file)) != -1) {
    printf("Retrieved line of length %s :\n", &read);
    printf("%s", line);
}

if (line)
    free(line);

return 0;
Run Code Online (Sandbox Code Playgroud)

有什么建议为什么不起作用?

c file getline

5
推荐指数
1
解决办法
4万
查看次数

如何释放空指针

可能重复:
在调用free之前检查NULL
当你尝试free()已经释放c中的内存时会发生什么?

希望这不是一个完全愚蠢的问题.无论如何...

传入空指针时会发生什么free.

谢谢!

PS标准兼容分配器怎么样?再次感谢!

c c++

2
推荐指数
1
解决办法
4569
查看次数

在 C 中创建一个函数来读取文件但它无限循环

我基本上想打印出我制作的文件中的所有行,但它只是一遍又一遍地循环回到开始,基本上是因为我在函数中设置了fseek(fp, 0, SEEK_SET);这部分,但我知道否则我将如何放置它以完成所有其他操作行我基本上每次都回到开始。

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

char *freadline(FILE *fp);

int main(){

    FILE *fp = fopen("story.txt", "r");

    if(fp == NULL){
        printf("Error!");
    }else{
        char *pInput;
        while(!feof(fp)){
            pInput = freadline(fp);
            printf("%s\n", pInput); // outpu 
        }   
    }
    
    return 0;
}

char *freadline(FILE *fp){
    int i;
    for(i = 0; !feof(fp); i++){
        getc(fp);
    }
    fseek(fp, 0, SEEK_SET); // resets to origin (?)
    char *pBuffer = (char*)malloc(sizeof(char)*i);
    pBuffer = fgets(pBuffer, i, fp);

    return pBuffer;
}

Run Code Online (Sandbox Code Playgroud)

这是我目前的工作

c

2
推荐指数
1
解决办法
103
查看次数

标签 统计

c ×7

getline ×2

c++ ×1

fgets ×1

file ×1

gcc ×1

newline ×1

pointers ×1

scanf ×1

string ×1