#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int length;
char **lines, buffer[80];
printf("How many lines do you want to enter?.\n");
scanf("%d", &length);
getchar();
lines = (char**)malloc(length * sizeof(char*));
for (i = 0; i < length; ++i) { //Scan user's lines
gets(buffer);
lines[i] = (char*)malloc(strlen(buffer) * sizeof(char) + 1);
if (!lines[i]) { //Check if allocation available
printf("Error! Out of memory!");
return endProgram;
}
strcpy(lines[i], buffer);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么gets()函数给我一个关于假设extern返回int的错误,我只是想扫描一个字符串.
最可能的原因是gets()函数已被弃用了一段时间.看起来它已从<stdio.h>您的系统中删除.
幸运的是,这种情况很容易解决:用这样的方式替换呼叫fgets():
fgets(buffer, sizeof(buffer), stdin);
Run Code Online (Sandbox Code Playgroud)
注: fgets是不是下降的替代产品gets,因为它使'\n'字符在行它返回的字符串内结束.本问答讨论了该问题,并提供了解决方案.
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |