gpt4 book ai didi

c - 初始化使指针来自整数而没有 C 警告中的强制转换

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:58 24 4
gpt4 key购买 nike

const char * const str = ch; 上有一个 warning:initialization makes pointer from integer without a cast

如果我将其更改为 const char * const str = (char*)ch,警告将被从不同大小的整数转换为指针

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

int main(int argc, char **argv){
FILE *file1;
char ch;
char array[100];

file1 = fopen("list.txt","r");
while((ch=fgetc(file1))!=EOF)
{
const char * const str = (char*)ch;
const char * const delim = "\n";
char * const dupstr = strdup(str);
char *saveptr = NULL;
char *substr = NULL;
int count = 0;
printf("original string is %s",dupstr);
substr = strtok_r(dupstr, delim, &saveptr);
do{
printf("#%d filename is %s\n", count++, substr);
substr = strtok_r(NULL, delim, &saveptr);
}
while(substr);

free (dupstr);
return 0;
}
fclose(file1);
return 0;
}

最佳答案

  • ch=fgetc(file1))!=EOF 不正确,因为 ch 是 char,而 EOF整数。这就是 fgetc 和类似函数返回 int 的原因。修复当前代码的最简单方法可能是使用临时 int,然后将其复制到循环内的 char

  • const char * const str = (char*)ch;。从字符转换为指针没有任何意义。这就是警告的原因。如果您想创建一个由一个字符组成的临时字符串,您应该执行类似 char str[2] = {ch, '\0'} 的操作。这样你也不必使用 strdup

关于c - 初始化使指针来自整数而没有 C 警告中的强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com