原函数:
char *Is_ip6Get(char *is_ip6, char *hostname){
FILE *fp = NULL;
char temp[512];
char path[1024];
sprintf(path, "%s%s", IS_IP6, hostname);
if (access(path, F_OK)) return NULL;
if (NULL == (fp = fopen(path, "r"))) return NULL;
if (fp){
fgets(temp, 1024, fp);
is_ip6 = temp;
}
return is_ip6;
}
一下代码是输出到页面js的:
if(IPv6)
printf("var IPv6=\"%s\";\n", IPv6);
else
printf("var IPv6=\"\";\n");
会出现以下问题:
var IPv6=“1314
”;
页面就会报错
原因:
fgets函数不会自动丢弃换行符\n
改进函数:
char *Is_ip6Get(char *is_ip6, char *hostname){
FILE *fp = NULL;
char temp[512];
char path[1024];
int len = 0;
sprintf(path, "%s%s", IS_IP6, hostname);
if (access(path, F_OK)) return NULL;
if (NULL == (fp = fopen(path, "r"))) return NULL;
if (fp){
fgets(temp, 1024, fp);
if(!(strncmp(temp, "(null)", 6)))
return NULL;
len = strlen(temp);
temp[len - 1] = '\0';
is_ip6 = temp;
}
return is_ip6;
}
分享到:
相关推荐
今天在编写99乘法在线小游戏(看过我的 linux下c实现的数据库备份(第四版)应该知道我在那里提过^.^)的时候遇到读取文件的信息遇到回车换行符的烦恼。 比如我文件里面有如下信息: name=qizexi sex=man 我希望读取...
执行后,`str1`将包含"Love ,I Have",包括行尾的换行符`\n`(它会被读取但不会显示),并在末尾自动添加字符串结束符`\0`。 `fputs` 函数则用于将字符串写入到一个文件中。它的原型是: ```c int fputs(const char...
通过以上内容,我们可以看出`fgets`和`fputs`这两个函数在C语言中的重要性,以及如何使用这些函数来实现对文件的基本操作。同时,也介绍了一些其他相关的文件操作函数,如`fclose`、`_fcloseall`、`fread`和`fwrite`...
- `fgets()`不会自动去除字符串中的换行符,如果不需要,可以在读取后手动移除。 - 使用`fgets()`时要注意长度控制,避免缓冲区溢出,这比`gets()`更安全。 ### fputs() 函数 `fputs()` 用于将字符串写入到指定...
4. 如果有一行,含有LINE_SIZE个字符(包括换行符),要想把这行读入缓冲区,请把参数n设为LINE_SIZE+1。 fputs函数 fputs函数的原型为:int fputs(const char *s, FILE *stream);该函数向指定的文件写入一个字符...
\r回车符将光标移到当前行的开头,不会换到下一行。如果接着输出的话,本行以前的内容会被逐一覆盖。例如: ```cpp cout ; ``` endl换行符 endl换行符不仅将光标移到下一行的开头,还会将缓冲槽的内容输出到控制台...
select 函数可以用来检测文件描述符是否可读或可写,从而避免 fgets 函数的阻塞。 例如,在获取 4G 模块的信号强度信息时,可以使用 popen 函数来创建一个子进程,执行 AT 指令,以获取信号强度信息。然后,使用 ...
这意味着即使`bufsize`很大,`fgets`也只会读取到换行符`\n`或文件结束符EOF为止。 #### 文件流指针偏移原理 当使用`fgets`读取文件时,文件流指针的移动遵循以下规则: - 第一次读取时,指针会从文件开头开始读取...
这两个函数的主要区别在于对换行符的处理。`fgetl`会忽略行尾的换行符,返回不含换行符的字符串,而`fgets`则会将换行符一同读入字符串。 例如,`fgetl`的使用方式如下: ```matlab fid = fopen('filename.txt', 'r...
例如,fgets 函数会将换行符也读取进来,导致字符串的末尾多出一个换行符。为了解决这个问题,我们可以使用以下代码: ```cpp char str[100]; fgets(str, 100, stdin); str[strlen(str) - 1] = '\0'; ``` 在上面的...
这个函数可以帮助我们方便地处理文本文件,避免了因为读取大块数据可能导致的内存问题。现在我们来深入探讨一下`fgets()` 的使用方法和相关知识点。 ### fgets() 函数定义 `fgets()` 函数的原型定义如下: ```c ...
值得注意的是,`fputs()`不会像`puts()`那样自动在字符串末尾添加换行符,除非字符串本身包含换行符。 2. **按行读文件**: - `fgets()` 函数则用于从文件中按行读取字符串。它的原型是 `char *fgets(char *s, int...
这个函数从标准输入流中读取最多100个字符,直到遇到换行符或EOF为止。运行fgets函数后,用户键入的任何字符都会被保存在string变量中,包括换行符。 程序接着使用strlen函数计算string中的字符数,但要注意这里...
在这个例子中,`getchar()`的返回值被赋值给变量`c`,然后检查是否等于换行符。如果不是,循环继续,继续读取下一个字符。 如果你需要一次性读取一整行的输入,`fgets()`函数会更加合适。`fgets()`可以从标准输入或...
在这个例子中,`fgets()` 会读取最多5个字符(`LEN - 1`),并保留末尾的换行符。如果输入的字符串长度超过5个字符,`fgets()` 会在达到限制时停止读取,剩余的字符将不会被读取。 总结来说,`gets()` 函数由于其...
fgets函数在到达行末时停止,在这种情况下,`str`字符串将会被一个新行符结束。如果fgets函数达到`[num - 1]`个字符或者遇到EOF,`str`字符串将会以null结束。fgets函数成功时返回`str`字符串,失败时返回NULL。 ...
7. `fgets()` 函数:`fgets(s, size, stream)`读取`stream`中的一个字符串,直到遇到换行符、文件末尾或读取了`size-1`个字符。结果字符串以NULL终止。`fgets()`对于读取整行数据非常有用。 8. `fileno()` 函数:`...