我是C++的新手,正在为一个班级工作.我们获得了一个.txt文件,必须从中读取信息,并将其存储在链表中,然后将其打印给用户.经过几个小时的尝试操作我们给出的例子,再过几个小时尝试从头开始编写代码,我与两者的关系都变得最接近.
该文件名为payroll.txt,在这种格式中大约有30行:
Clark Kent 55000 2500 0.07
Lois Lane 65000 1000 0.06
Tony Stark 70000 1500 0.05
我们的教授非常重视我们的代码,所以我希望它有所帮助.这是我的代码:
#include <cstdlib>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MAX_STR 100
/* Structure Definition */
typedef struct employeeType Employ;
struct employeeType {
char first[MAX_STR]; /* first name */
char last[MAX_STR]; /* last name */
int salary; /* salary */
int bonus; /* bonus */
double deduc; /* percent deduction */
Employ *next;
};
/* operations on the …Run Code Online (Sandbox Code Playgroud) 我是C编程的新手,我在理解C编程中常见的陷阱和不同库函数的常见用法时遇到了问题.有人能指出一个很好的资源,在那里我可以学习C编程中的细微之处.还有一点可以指向一个很好的资源学习像gdb这样的调试工具.
另外我想知道char *c="hello";和之间有什么区别char c[10]="hello".有人可以告诉我在不同情况下哪一个推荐给另一个.
感谢和问候,
像老鼠.
在我的程序中,我试图使用malloc函数调整数组大小.
#include <stdio.h>
int main(void)
{
int list[5],i;
int* ptr = &list;
for(i = 0; i < 5; i++)
list[i] = i;
for(i = 0; i < 5; i++)
printf("%d\n", list[i]);
printf("----------------------------------------\n");
ptr = malloc(10);
for(i = 0; i < 10; i++)
list[i] = i;
for(i = 0; i < 10; i++)
printf("%d\n", list[i]);
}
Run Code Online (Sandbox Code Playgroud)
在编译程序时,我得到两个警告:
searock @ searock-desktop:〜/ C $ cc malloc.c -o malloc
malloc.c:在函数'main'中:
malloc.c:6:警告:从不兼容的指针类型初始化
malloc.c:16:警告:不兼容隐式内置函数'malloc'的声明
我的程序运行正常.我不明白为什么编译器给我这个错误?
我应该改变方法吗?
编辑1:然后如何释放内存?我应该免费使用(列表); 或免费(ptr);
编辑2:更新的代码
#include <stdio.h>
#include <stdlib.h>
int …Run Code Online (Sandbox Code Playgroud) 我需要将此行转换为使用cin.
sscanf(s, "%*s%d", &d);
Run Code Online (Sandbox Code Playgroud)
sscanf与scanf和cin有什么区别?
我正在尝试在下一个程序中打印变量'nc'中的值:
int main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
请告诉我为什么不打印?
我知道它总是首先执行main()函数,然后函数调用将程序指向其他函数.如果有什么功能被称为*之前*的主要()函数?什么时候会被执行?
我有一个程序(我从互联网上下载),并在main()之前有函数调用.
现在我不知道它们是什么,如果只在main()中执行(以及在main中调用的函数).
这是该计划的片段:
static void set_level_indices (VideoParameters *p_Vid);
static void chroma_mc_setup (VideoParameters *p_Vid);
static void init_img (VideoParameters *p_Vid);
static void init_encoder (VideoParameters *p_Vid, InputParameters *p_Inp);
static int init_global_buffers (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_global_buffers (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_img (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_params (InputParameters *p_Inp);
static void encode_sequence (VideoParameters *p_Vid, InputParameters *p_Inp);
*(SOME FUNCTION DECLARATIONS OMITTED)*
int main(int argc, char **argv)
{
init_time();
#if MEMORY_DEBUG …Run Code Online (Sandbox Code Playgroud) 当我完全键入它们时,K&R中的一些示例在Code:Blocks中不起作用.例如,这个程序:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
当我输入此代码并运行它时,程序要么冻结,要么在按Enter键时不执行任何操作.
下面的程序做同样的事情(计算一个字符串中的字符),它的工作原理.
#include <stdio.h>
int main()
{
char s[1000];
int i;
scanf("%s",s);
for(i=0; s[i]!='\0'; ++i);
printf("Length of string: %d",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?自K&R第二版以来C是否已被更改或我做错了什么?
这可能看起来很简单,但这个问题在很多方面让我感到痒痒.
我的问题是关于c中变量的声明和辩护.
互联网上实际上有很多关于这个的解释,并且这个问题不仅有一个解决方案,因为在这个问题上有许多观点.我想知道这个问题的明确存在.
int a;
Run Code Online (Sandbox Code Playgroud)
只是拿这个是一个声明或定义?,这个当我使用时printf,它具有0作为值和地址2335860.但是如果这个声明那么为此分配内存的方式.
int a;
int a;
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它说先前的'a'声明在这里并重新声明'a'没有联系.
一些消息来源说c中允许重新声明,有些人说不是真的是什么?
我学习这些概念,请帮助我以下代码抛出分段错误的原因.我在这段代码中的意图是打印大写字母D并移到下一个地址.请解释一下.感谢你.
main()
{
char *ptr="C programming";
printf(" %c \n",++*ptr);
}
Run Code Online (Sandbox Code Playgroud) 我对 [K&R88] 深陷其中,并且受到责备,因为 K&R 用作示例和练习材料的gcc函数现已存在(据我所知,从 2010 年左右就开始存在)。getline()stdio.h
有什么办法可以告诉编译器像 1988 年一样播放它,并让我的朴素版本取代库中的版本吗?
\n(是的,这是徒劳的,但填充 [K&R88] 是我的新爱好;-)
\n强制编译器输出:
\ngcc -g -Wall -o "pgm" "pgm.c" (in directory: /home/eric/Development/6.087)\npgm.c:9:7: error: conflicting types for \xe2\x80\x98getline\xe2\x80\x99\n 9 | char *getline(){\n | ^~~~~~~\nIn file included from pgm.c:1:\n/usr/include/stdio.h:616:18: note: previous declaration of \xe2\x80\x98getline\xe2\x80\x99 was here\n 616 | extern __ssize_t getline (char **__restrict __lineptr,\n | ^~~~~~~\nCompilation failed.\nRun Code Online (Sandbox Code Playgroud)\n